我正在使用来自对象的地址在 Map 上绘制多个点 . 程序循环遍历对象 geocodes
地址,并为每个位置绘制标记 .
我遇到的问题是当用户点击列表中的某个地点时, Map 将平移到该位置 . API具有接受 lat, lng
值的 panTo()
函数,但是地理编码函数中的结果(即 results[0].geometry.location
)在其外部不可用 .
Question
我如何以某种方式从结果中检索 lat, lng
,可能将它们附加到现有数据对象,并在函数外部使用它们,所以我能够在 panTo()
函数中使用它们?
[lat / lng值以html data
属性输出]
单击处理程序
$('.place').on('click', function() {
$this = $(this);
lat = $this.data('lat');
lng = $this.data('lng');
map.panTo(new google.maps.LatLng(lat, lng));
});
数据
var locations = [
{
id: 'place1',
postcode: 'B1 1AA'
},
{
id: 'place2',
postcode: 'CB9 8PU'
}
];
码
for (i = 0; i < locations.length; i++) {
geocoder.geocode({'address': locations[i].postcode}, function(results, status) {
if(status == google.maps.GeocoderStatus.OK) {
marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map
});
} else {
console.log('Geocode was not successful ' + status);
}
}); // end geocode
$(places).append(
'<li class="place" data-id="'+locations[i].id+'" data-lat="<!--lat to go here-->" data-lng="<!--lng to go here-->">'+
'<div class="place-wrap">'+
'<h2>'+locations[i].name+'</h2>'+
'<p class="territory">'+locations[i].territory+'<p>'+
'</div>'+
'</li>'
);
} // end for
1 回答
放手一搏 . 由于地理编码的异步性质,IIFE用于封装索引,因此您不会继续命中
locations
数组的最后一个索引 .