谷歌地图错误说我必须指定位置

时间:2017-06-22 17:49:47

标签: javascript google-maps

我一直试图解决这个问题一段时间无济于事。 所以我使用W3C标准地理位置来拉我的位置,然后我将它分配给另一个变量:

 navigator.geolocation.getCurrentPosition(function(position) {
  var pos = {
    lat: position.coords.latitude,
    lng: position.coords.longitude
  };

  currentLocation = pos;

  infoWindow.setPosition(pos);
  infoWindow.setContent('Location found.');
  map.setCenter(pos);
}, function() {
  handleLocationError(true, infoWindow, map.getCenter());
});
} else {
  // Browser doesn't support Geolocation
  handleLocationError(false, infoWindow, map.getCenter());
}

currentLocation是全球定义的。 找到我的位置,但是当我尝试执行雷达搜索时,它会失败并抛出错误:'未捕获的错误:缺少参数。您必须指定位置。'

这是我的雷达搜索

function performSearch() {
  var request = {
    location: currentLocation,
    radius: searchRadius,
    type: ['restaurant']
  };
  service.radarSearch(request, callback);
}

function callback(results, status) {
        if (status !== google.maps.places.PlacesServiceStatus.OK) {
          console.error(status);
          return;
        }
        for (var i = 0, result; result = results[i]; i++) {
          addMarker(result);
        }
}

1 个答案:

答案 0 :(得分:1)

我认为在执行performSearch时没有设置currentLocation。我能够通过定义但不设置全局变量然后在设置它之前在performSearch()中使用该变量来使用JSFiddle重现错误。我收到了和你一样的错误。

您可以解决此问题的一种方法是确保在设置变量currentLocation后执行performSearch。我不确定你当前在哪里调用performSearch(),但是如果你修改你的代码在你的第一个函数中调用它,我相信它会起作用:

 navigator.geolocation.getCurrentPosition(function(position) {
 var pos = {
   lat: position.coords.latitude,
   lng: position.coords.longitude
 };

 currentLocation = pos;

 infoWindow.setPosition(pos);
 infoWindow.setContent('Location found.');
 map.setCenter(pos);
 performSearch();
}

我希望这有帮助!