Javascript 放置搜索请求,使用边界给出不一致的结果

Javascript 放置搜索请求,使用边界给出不一致的结果,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,根据此链接: 该方法可以采用以下两种方法之一: -点和半径或 -矩形边界 使用点+半径可以得到正确的结果,但是最大半径只有50公里,我需要搜索到1000公里,所以我尝试使用边界。 当我的边界很小时,我会得到与点+半径相同的正确结果,但是当我增加边界时,我不会得到任何结果 下面的代码将给出正确的结果,但是如果用注释掉的坐标替换var sw和var ne,它将不再工作 kitchener位于ayr和圭尔夫之间的边界内,但不在底特律和渥太华之间的边界内。如果你看地图,那就没什么意义了 <scri

根据此链接:

该方法可以采用以下两种方法之一:

-点和半径或

-矩形边界

使用点+半径可以得到正确的结果,但是最大半径只有50公里,我需要搜索到1000公里,所以我尝试使用边界。 当我的边界很小时,我会得到与点+半径相同的正确结果,但是当我增加边界时,我不会得到任何结果

下面的代码将给出正确的结果,但是如果用注释掉的坐标替换var sw和var ne,它将不再工作

kitchener位于ayr和圭尔夫之间的边界内,但不在底特律和渥太华之间的边界内。如果你看地图,那就没什么意义了

<script type="text/javascript">
  var map;
  var infowindow;

  function initialize() {
    var Cambridge = new google.maps.LatLng(43.346528, -80.417962);
    var sw = new google.maps.LatLng(43.292501,-80.543175);  // 41.914541,-83.282318  
    var ne = new google.maps.LatLng(43.605057,-80.156250);  // 45.580391,-76.283051
    var zoneBounds = new google.maps.LatLngBounds(sw,ne);

    map = new google.maps.Map(document.getElementById('map'), {
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: Cambridge,
      zoom: 10
    });

    var request = {
      bounds: zoneBounds,
      //location: Cambridge,        //using location and
      //radius: 500000,             //radius works
      name: ['Kitchener, ON']


    };
    infowindow = new google.maps.InfoWindow();
    var service = new google.maps.places.PlacesService(map);
    service.search(request, callback);
  }

  function callback(results, status) {
    if (status == google.maps.places.PlacesServiceStatus.OK) {
      for (var i = 0; i < results.length; i++) {
        createMarker(results[i]);
      }
    }
  }

  function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
      map: map,
      position: place.geometry.location
    });

    google.maps.event.addListener(marker, 'click', function() {
      infowindow.setContent(place.name);
      infowindow.open(map, this);
    });
  }
  google.maps.event.addDomListener(window, 'load', initialize);
</script>

var映射;
var信息窗口;
函数初始化(){
var Cambridge=new google.maps.LatLng(43.346528,-80.417962);
var sw=new google.maps.LatLng(43.292501,-80.543175);/41.914541,-83.282318
var ne=new google.maps.LatLng(43.605057,-80.156250);/45.580391,-76.283051
var zoneBounds=新的google.maps.LatLngBounds(西南、东北);
map=new google.maps.map(document.getElementById('map'){
mapTypeId:google.maps.mapTypeId.ROADMAP,
中心:剑桥,
缩放:10
});
var请求={
边界:zoneBounds,
//位置:Cambridge,//使用位置和
//半径:500000,//半径工程
姓名:['Kitchener,ON']
};
infowindow=new google.maps.infowindow();
var service=newgoogle.maps.places.PlacesService(地图);
服务搜索(请求、回调);
}
函数回调(结果、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
对于(var i=0;i
我应该能够使用PlacesServiceStatus来查找请求的状态,我认为这会让我深入了解问题,但我不知道如何检索状态代码

在此方面的任何帮助都将不胜感激

谢谢


编辑:确定,我添加了警报(状态);状态显示为“零结果”

在回调方法中,您可以执行以下操作

function callback(results, status) {
    window.alert(results.length);
这将告诉你你有多少个结果,你可以像这样循环它们

        for (var i = 0; i < results.length; i++) {
            window.alert(results[i].formatted_address);
        }
for(var i=0;i
我自己也试过,是的,如果边界大于50公里,那么结果是毫无用处的。我能猜出答案;如果界限非常大,那么可能会对谷歌服务器造成太大的冲击。然而,我不喜欢这个答案,所以如果有人知道得更好;帮帮我们

另一种选择是使用位置自动完成-


您可以使用地理定位,但我怀疑它是否能提供您想要的响应,例如,如果您对“enfield”进行地理编码,它将向您显示世界上所有的enfields,如果您对“enf”进行地理编码,它将向您显示一个完整的机场

在回调方法中,您可以执行以下操作

function callback(results, status) {
    window.alert(results.length);
这将告诉你你有多少个结果,你可以像这样循环它们

        for (var i = 0; i < results.length; i++) {
            window.alert(results[i].formatted_address);
        }
for(var i=0;i
我自己也试过,是的,如果边界大于50公里,那么结果是毫无用处的。我能猜出答案;如果界限非常大,那么可能会对谷歌服务器造成太大的冲击。然而,我不喜欢这个答案,所以如果有人知道得更好;帮帮我们

另一种选择是使用位置自动完成-

您可以使用地理定位,但我怀疑它是否能提供您想要的响应,例如,如果您对“enfield”进行地理编码,它将向您显示世界上所有的enfields,如果您对“enf”进行地理编码,它将向您显示一个完整的机场