如何动态生成谷歌自动完成地址api
How to generate google autocomplete address api dynamically
我需要生成n个数字地址抓取器,并获得json格式的输出,这可以通过点击按钮的ajax来完成。但我不知道如何使用googleapi动态生成自动完成并单独获取内容。
我需要展示与这把小提琴完全相同的设计。
http://jsfiddle.net/6BcUD/
initialize();
var placeSearch, autocomplete;
var componentForm = {
street_number: 'short_name',
route: 'long_name',
locality: 'long_name',
administrative_area_level_1: 'short_name',
country: 'long_name',
postal_code: 'short_name'
};
function initialize() {
autocomplete = new google.maps.places.Autocomplete(
/** @type {HTMLInputElement} */(document.getElementById('autocomplete')),
{ types: ['geocode'] });
google.maps.event.addListener(autocomplete, 'place_changed', function() {
fillInAddress();
});
}
function fillInAddress() {
var place = autocomplete.getPlace();
for (var component in componentForm) {
document.getElementById(component).value = '';
document.getElementById(component).disabled = false;
}
for (var i = 0; i < place.address_components.length; i++) {
var addressType = place.address_components[i].types[0];
if (componentForm[addressType]) {
var val = place.address_components[i][componentForm[addressType]];
document.getElementById(addressType).value = val;
}
}
}
function geolocate() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(function(position) {
var geolocation = new google.maps.LatLng(
position.coords.latitude, position.coords.longitude);
autocomplete.setBounds(new google.maps.LatLngBounds(geolocation,
geolocation));
});
}
}
目前我已经添加了3个表单,但我需要通过"添加表单"按钮添加它,我认为我可以通过使用jquery append来完成。但是,如何使它在谷歌自动完成工作?
感谢
如果您想重用javascript代码来管理多个表单,那么您的javascript代码必须更"通用",而不是基于DOM元素ID。
包含自动完成实例的全局var不是一个好主意。
我编辑了你的jsFiddle,向你推荐了一个基于jQuery的解决方案(你放了jQuery标签,所以我认为我可以依赖它):
- 我定义了一个div
#addressForms
,点击#addForm
按钮后将在其中添加表单 - 我已经把你的表单包装在一个隐藏的div
#template
中。每次单击#addForm
时,模板内容都会被复制、使用自动完成进行初始化并附加到#addressForms
- 由于DOM元素id必须是唯一的,我删除了表单元素id,并将它们用作css类
- 我还删除了全局变量
componentForm
,并在每个字段元素上添加了数据(data-type
)
看看jsFiddle是否满足您的需求。
编辑:
我根据您的评论创建了这个jsFiddle。它还没有完成,但它会有所帮助。
相关文章:
- 三星智能电视应用程序使用谷歌API
- 在谷歌api v3中使用地理自动完成功能获取邮政编码
- 从谷歌API地理代码的形式字段到数据库
- 从名称或邮政编码获取纬度和经度-谷歌API
- 英国邮政编码谷歌API不返回街道地址
- 用于谷歌API的Jquery
- 根据谷歌 Api v3 书/也用一个按钮添加一个标记
- 谷歌 API :仪表动画
- (谷歌API)单元格引用中的动态工作表和工作表创建脚本的名称
- 谷歌APi 不检索值
- 一个回调两个异步函数,一个是谷歌 api getDistanceMatrix
- 谷歌API正在计算无效地址的距离
- 在文件系统中使用谷歌API
- 如何对谷歌 API 搜索查询进行编码
- 如何使用谷歌API从街景切换到路线图
- 谁能告诉我为什么我不能从谷歌 API 获得城市列表
- 如何使用谷歌 API 网页版从address_components获取地点 ID
- 从经度和纬度谷歌 API 获取邮政编码
- 动态向下面的透视柱形图添加注释 - 谷歌 API
- 谷歌 API 图表日志刻度不起作用