Javascript Google Maps API v3带半径的商店定位器:当用户中没有商店时控制地图输出';s半径
我遵循Google Maps商店定位器教程,构建了一个定位器,获取用户的位置和半径,然后输出用户位置半径内的所有商店位置。在大多数情况下,它是有效的 我的问题是,当我输入一个位置和半径,并且在该半径内没有商店时,我的定位器将地图的中心对准太平洋的中部 我尽了最大努力研究了其他商店定位器的问题,但它们都是为了让定位器本身工作。如果我错过了什么,我道歉!另外,对于javascript,我是一个初学者,所以对于代码背后的逻辑答案,我非常感激 谢谢Javascript Google Maps API v3带半径的商店定位器:当用户中没有商店时控制地图输出';s半径,javascript,google-maps,Javascript,Google Maps,我遵循Google Maps商店定位器教程,构建了一个定位器,获取用户的位置和半径,然后输出用户位置半径内的所有商店位置。在大多数情况下,它是有效的 我的问题是,当我输入一个位置和半径,并且在该半径内没有商店时,我的定位器将地图的中心对准太平洋的中部 我尽了最大努力研究了其他商店定位器的问题,但它们都是为了让定位器本身工作。如果我错过了什么,我道歉!另外,对于javascript,我是一个初学者,所以对于代码背后的逻辑答案,我非常感激 谢谢 function searchLocationsNe
function searchLocationsNear(center) {
clearLocations();
var radius = document.getElementById('radiusSelect').value;
var searchUrl = 'storelocator_getXML.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
downloadUrl(searchUrl, function(data) {
var xml = parseXml(data);
var markerNodes = xml.documentElement.getElementsByTagName("marker");
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markerNodes.length; i++) {
var name = markerNodes[i].getAttribute("name");
var address = markerNodes[i].getAttribute("address");
var phone = markerNodes[i].getAttribute("phone");
var fax = markerNodes[i].getAttribute("fax");
var directions = markerNodes[i].getAttribute("directions");
var distance = parseFloat(markerNodes[i].getAttribute("distance"));
var latlng = new google.maps.LatLng(
parseFloat(markerNodes[i].getAttribute("lat")),
parseFloat(markerNodes[i].getAttribute("lng")));
createOption(name, address, distance, i);
createMarker(latlng, name, address, phone, fax, directions);
bounds.extend(latlng);
}
map.fitBounds(bounds);
locationSelect.style.visibility = "visible";
locationSelect.onchange = function() {
var markerNum = locationSelect.options[locationSelect.selectedIndex].value;
google.maps.event.trigger(markers[markerNum], 'click');
};
});
}
函数搜索位置近(中){
clearLocations();
var radius=document.getElementById('radiusSelect')。值;
var searchUrl='storelocator_getXML.php?lat='+center.lat()+'&lng='+center.lng()+'&radius='+radius;
下载URL(搜索URL,函数(数据){
var xml=parseXml(数据);
var markerNodes=xml.documentElement.getElementsByTagName(“标记”);
var bounds=new google.maps.LatLngBounds();
对于(变量i=0;i
经过多次尝试和错误,我有了一个好机会,我找到了在哪里放置if/else语句,以使我的地图远离太平洋:
function searchLocationsNear(center) {
clearLocations();
var radius = document.getElementById('radiusSelect').value;
var searchUrl = 'storelocator_getXML.php?lat=' + center.lat() + '&lng=' + center.lng() + '&radius=' + radius;
downloadUrl(searchUrl, function(data) {
var xml = parseXml(data);
var markerNodes = xml.documentElement.getElementsByTagName("marker");
我在这里放了一个if语句。在抓取选定半径内的所有标记位置后,它会说,如果有标记继续正常工作:
if(markerNodes.length>0){
var bounds = new google.maps.LatLngBounds();
for (var i = 0; i < markerNodes.length; i++) {
var name = markerNodes[i].getAttribute("name");
var address = markerNodes[i].getAttribute("address");
var phone = markerNodes[i].getAttribute("phone");
var fax = markerNodes[i].getAttribute("fax");
var directions = markerNodes[i].getAttribute("directions");
var distance = parseFloat(markerNodes[i].getAttribute("distance"));
var latlng = new google.maps.LatLng(
parseFloat(markerNodes[i].getAttribute("lat")),
parseFloat(markerNodes[i].getAttribute("lng")));
createOption(name, address, distance, i);
createMarker(latlng, name, address, phone, fax, directions);
bounds.extend(latlng);
}
map.fitBounds(bounds);
谢谢,你帮我省了点麻烦!
} else {
alert('Sorry, there are no stores that close to your location. Try expanding your search radius.');
}
locationSelect.style.visibility = "visible";
locationSelect.onchange = function() {
var markerNum = locationSelect.options[locationSelect.selectedIndex].value;
google.maps.event.trigger(markers[markerNum], 'click');
};
});
}