我正在构建商店定位器类型的页面。用户输入他/她的邮政编码,然后进入结果页面。
在结果页面上,我首先运行geoencode以获取邮政编码的LatLng并将地图居中。然后我浏览结果div(从数据库中填充)并为每个结果运行geoencode并为每个设置标记。所有的距离计算都是在数据库方面完成的,所以我不必在这里处理它们。然后我设置了一个信息窗口和一个点击事件,这样当他们打开时,他们会在他们的信息窗口中获得相应的信息。这部分一切正常。
当我从数据库中获得超过10个结果时,我遇到的问题就是处理。 Google地图每秒最多有10个api通话。所以我尝试创建一个更多的结果按钮,然后点击,将在页面和地图上显示接下来的10个结果。
$('#more-results').click(function(){
var $elements = $('#dealer-results-dev li[data-index='+base+']').nextUntil( '#dealer-results-dev li[data-index='+(base + 11)+']' );
$elements.slideDown();
$elements.each(function(index, element){
$element = $(element);
var address = $element.find('span.address').html() + ' ' +$element.find('span.address2').html();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
markers.push(marker);
google.maps.event.addListener(marker, 'click', function() {
var $element = $('#dealer-results li:nth-child('+(index +1)+')')
var contentString = '<div class="content">'+
'<h3>'+ $element.find('h3').html()+'</h3>'+
'<span>' + $element.find('span.distance').html() +'</span><br>'+
'<span>' + $element.find('span.address').html() +'</span><br>'+
'<span>' + $element.find('span.address2').html() +'</span><br>'+
'<span>' + $element.find('span.phone').html() + '</span><br>'+
'<span>Link</span>'+
'</div>';
infowindow.setContent(contentString);
infowindow.open(map,marker);
map.setCenter(results[0].geometry.location);
});
}else{
alert("Geocode was not successful for the following reason: " + status);
}
});
});
base += 10;
});
我尝试将其设置为5,但我仍然在第4个元素处获得错误。