Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/473.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Google Maps API v3带半径的商店定位器:当用户中没有商店时控制地图输出';s半径_Javascript_Google Maps - Fatal编程技术网

Javascript Google Maps API v3带半径的商店定位器:当用户中没有商店时控制地图输出';s半径

Javascript Google Maps API v3带半径的商店定位器:当用户中没有商店时控制地图输出';s半径,javascript,google-maps,Javascript,Google Maps,我遵循Google Maps商店定位器教程,构建了一个定位器,获取用户的位置和半径,然后输出用户位置半径内的所有商店位置。在大多数情况下,它是有效的 我的问题是,当我输入一个位置和半径,并且在该半径内没有商店时,我的定位器将地图的中心对准太平洋的中部 我尽了最大努力研究了其他商店定位器的问题,但它们都是为了让定位器本身工作。如果我错过了什么,我道歉!另外,对于javascript,我是一个初学者,所以对于代码背后的逻辑答案,我非常感激 谢谢 function searchLocationsNe

我遵循Google Maps商店定位器教程,构建了一个定位器,获取用户的位置和半径,然后输出用户位置半径内的所有商店位置。在大多数情况下,它是有效的

我的问题是,当我输入一个位置和半径,并且在该半径内没有商店时,我的定位器将地图的中心对准太平洋的中部

我尽了最大努力研究了其他商店定位器的问题,但它们都是为了让定位器本身工作。如果我错过了什么,我道歉!另外,对于javascript,我是一个初学者,所以对于代码背后的逻辑答案,我非常感激

谢谢


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');
   };

 });
}