gpt4 book ai didi

javascript - 通过 Google Maps Geocode API 使用 For 循环索引

转载 作者:行者123 更新时间:2023-11-28 17:48:07 28 4
gpt4 key购买 nike

我正在尝试获取一个名为“markers”的 JavaScript 数组,该数组存储我想要添加为 Google map 上的标记的地点的名称和街道地址。

var markers = [['Name of Place', '123 1st Street New York, NY'], ['Place 2', '122 1st Street, New York, NY']];

我可以毫无问题地使 map 正确显示,甚至使标记以从“标记”数组访问的标题显示。只要我明确地从“标记”数组访问标题即可。如下图:

var map;
var geocoder;

function initMap(){
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 34.6760942, lng: -82.8386035},
zoom: 13
});

geocoder = new google.maps.Geocoder();

for(i = 0; i < markers.length; i++){
geocoder.geocode({'address': markers[i][1]}, function(results, status) {
if(status == 'OK'){
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: markers[0][0]
});
} else {
alert('Geocode was not successful because: ' + status);
}
});
}
}

但是,我希望能够在 for 循环中使用索引“i”来迭代创建这些标记。如果我尝试使用 (title:markers[i][0]) 迭代地从“markers”数组中获取标题,如下所示。我收到“未捕获类型错误:无法读取未定义的属性‘0’。

变量映射;变量地理编码器;

function initMap(){
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 34.6760942, lng: -82.8386035},
zoom: 13
});

geocoder = new google.maps.Geocoder();

for(i = 0; i < markers.length; i++){
geocoder.geocode({'address': markers[i][1]}, function(results, status) {
if(status == 'OK'){
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: markers[i][0]
});
} else {
alert('Geocode was not successful because: ' + status);
}
});
}
}

由于某种原因,函数中的索引 i 未定义。我怎样才能确保“i”在函数内部定义?

最佳答案

我可以建议你使用闭包吗?

function geocodeEncapsulation(i) {
return( function(results, status){
if(status == 'OK'){
marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location,
title: markers[i][0]
});
} else {
alert('Geocode was not successful because: ' + status);
}
});
}

function initMap(){
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: 34.6760942, lng: -82.8386035},
zoom: 13
});

geocoder = new google.maps.Geocoder();

for(i = 0; i < markers.length; i++){
geocoder.geocode({'address': markers[i][1]}, geocodeEncapsulation(i));
}
}

关于javascript - 通过 Google Maps Geocode API 使用 For 循环索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46242012/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com