在多个地理编码中将标记与适当的请求相关联
Associate marker with proper request in multiple geocoding
我有一个 javascript 元素的数组。每个元素包含一个 address
和一个唯一的 id
.
var elements =
[
{
id: 1,
address: "address1"
},
{
id: 2,
address: "address2"
}
];
元素地址经过地理编码,生成的标记显示在 Google 地图中,如 this post 中所示。
for (var i = 0; i < elements.length; i++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+elements[i].address+'&sensor=false', null, function (data) {
// add marker to map
console.log(data.results[0]);
});
}
现在我的目标是将每个标记与正确的请求相关联。例如,假设第一个地理编码 (id=1
) 导致标记位于 (lat: 15.0526206, lng: 19.6929845)
。我想找到一种方法将此标记与 id=1
元素相关联。
我试过记录数据结果(见上面的片段),但不幸的是它没有帮助(formatted_address
与原始元素 address
相似但格式不同,所以字符串比较是不可行)。我该怎么办?
您需要创建 closures:
for (var i = 0; i < elements.length; i++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address=' +
encodeURIComponent(elements[i].address),
null,
(function(element){
return function(data){
console.log(element.id,data.results[0]);
}
}(elements[i])));
}
但是对于客户端geocode-requests你应该使用javascript-API的方法(请求网络服务可能会失败,因为不能保证会发送适当的headers)
var geocoder=new google.maps.Geocoder();
for (var i = 0; i < elements.length; i++) {
geocoder.geocode({address:elements[i].address},
(function(element){
return function(data){
console.log(element.id,data[0]);
}
}(elements[i])));
}
我有一个 javascript 元素的数组。每个元素包含一个 address
和一个唯一的 id
.
var elements =
[
{
id: 1,
address: "address1"
},
{
id: 2,
address: "address2"
}
];
元素地址经过地理编码,生成的标记显示在 Google 地图中,如 this post 中所示。
for (var i = 0; i < elements.length; i++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address='+elements[i].address+'&sensor=false', null, function (data) {
// add marker to map
console.log(data.results[0]);
});
}
现在我的目标是将每个标记与正确的请求相关联。例如,假设第一个地理编码 (id=1
) 导致标记位于 (lat: 15.0526206, lng: 19.6929845)
。我想找到一种方法将此标记与 id=1
元素相关联。
我试过记录数据结果(见上面的片段),但不幸的是它没有帮助(formatted_address
与原始元素 address
相似但格式不同,所以字符串比较是不可行)。我该怎么办?
您需要创建 closures:
for (var i = 0; i < elements.length; i++) {
$.getJSON('http://maps.googleapis.com/maps/api/geocode/json?address=' +
encodeURIComponent(elements[i].address),
null,
(function(element){
return function(data){
console.log(element.id,data.results[0]);
}
}(elements[i])));
}
但是对于客户端geocode-requests你应该使用javascript-API的方法(请求网络服务可能会失败,因为不能保证会发送适当的headers)
var geocoder=new google.maps.Geocoder();
for (var i = 0; i < elements.length; i++) {
geocoder.geocode({address:elements[i].address},
(function(element){
return function(data){
console.log(element.id,data[0]);
}
}(elements[i])));
}