谷歌位置api获取细节,并不是每个地方都返回
google places api get details not returned for every place
Hi-
我正在我的网站上创建一个页面,该页面使用谷歌位置api和用户的地理位置(lat,lng),并查找附近的餐厅。作为代码的一部分,我还查找了餐厅与用户位置的距离。问题是,当它得到每个结果时,我有一个名为getDistance的函数,它会为每个地方调用。对于许多结果,这将返回空字符串,而对于某些结果,它确实返回了空字符串。出于示例的目的,我在这个plunker示例中对用户的位置进行硬编码。有人能指出为什么没有为每个地方返回距离,为什么为一些地方返回空字符串,以及正确的解决方法吗?我真的很感激你的帮助。
我正在调用get distance函数,该函数在位置服务的回调函数中计算每个餐厅的距离(以英里为单位)
angular.forEach(results, function(result) {
//using new function for getting distance from user's location
var place = getDistance(result, service);
$scope.places.push(place);
});
这是getDistance函数
function getDistance (place, service) {
var request = {
reference: place.reference
};
service.getDetails(request, function (details, status) {
if(status == google.maps.places.PlacesServiceStatus.OK) {
place.details = details;
var distance = google.maps.geometry.spherical.computeDistanceBetween
(new google.maps.LatLng(33.940496, -84.048816), new google.maps.LatLng(place.geometry.location.lat(), place.geometry.location.lng()));
var distanceInMiles = getMiles(distance);
place["distance"] = distanceInMiles;
}
});
return place;
};
Plunker示例
如果所有用户在定期运行客户端地理编码请求时同时发出请求,则您的请求可能会被阻止。为了避免这种情况,请考虑以下配额注意事项之一:
- 使用缓存策略
- 为您的请求引入随机间隔(抖动)。确保请求在你的整个用户群中是随机的
- 如果是为Android开发的,请使用不精确的重复警报
- 如果是为Android开发,请选择合适的位置策略
谷歌地图API允许您缓存地理代码,如果您重复查找同一地址,这将非常有用。但是,正如文档中所述,有两件重要的事情需要记住。一个是:
随着我们的数据越来越准确,地理编码经常发生变化。因此,即使你已经缓存了数据,你也应该定期刷新它,以确保你得到了适合你所在位置的最佳地理编码。
除了提供一个区域内的地点列表外,地点服务还可以返回有关特定地点的详细信息。Place Details是通过调用服务的getDetails()
方法来请求的。此方法接受一个包含所需位置的placeId
的请求,还接受一个回调方法,该方法需要处理google.maps.places.PlacesServiceStatus
响应中传递的状态代码以及google.maps.places.PlaceResult
对象。
最后,对于同步问题,其中在getDetails()
回调设置位置之前返回位置,这篇相关的SO文章-不能等到结果从google API返回可以帮助您。
- Javascript并不是显示在每一页上
- 并不是所有的内联JavaScript都是通过AJAX执行的
- 为什么Angularjs服务返回的是字符数组而不是对象数组
- 谷歌位置api获取细节,并不是每个地方都返回
- mongodb中db.collection.find()的返回类型是什么
- 获取其中骰子的总和'它自己的窗口.并不是所有的窗户
- 在JavaScript中调用array()作为构造函数时,返回的是什么类型的数组
- 不了解这种返回语句是如何工作的
- CoffeeScript - 这个奇怪的“返回”事件是什么意思
- ReferenceError:utag在Firefox 45.0.1中并不是仅在私有模式下定义的
- JavaScript引发的样式更改并不是永久性的
- jQuery的返回值是Array,但构造函数是Object.如何
- WebSQL:SQLResultSetRowList 中的返回行是不可变的
- 从另一个函数返回 var 是 JS
- “this”返回的是[对象窗口],而不是元素
- JavaScript的“返回”真的是一个*关键字*吗?
- 很多使用TypeScript和AMD和RequireJS的请求,并不是这么糟糕
- JavaScript 返回“不是函数”错误,但该方法在 Firebug 中的响应中列出
- Node.js:Facebook返回的是未定义而不是个人资料
- 此代码中 onsubmit 事件处理程序中的返回用法是什么