我一直试图解决这个问题一段时间无济于事。 所以我使用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);
}
}
答案 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();
}
我希望这有帮助!