我正在使用地理编码器rails gem。我想从某个位置找到银行,学校,酒店附近。
location = Geocoder.search([48.856614, 2.3522219])
从上面我可以找到位置,但不能到达重要的地方。
我如何在“位置”对象上使用地理编码器的近距离方法,并找到诸如酒店,学校和银行等附近的地方?
有帮助吗?
谢谢
答案 0 :(得分:0)
您在Geocoder宝石中描述的没有过滤器或搜索。您可以在数据库中获取最近的10、20、50个其他地理编码对象。
因此,要使其像您所描述的那样起作用,您需要对每个医院,学校,银行等进行地理编码并将其存储在表格中,然后然后调用nearbys
你的观点。
即。对您所服务的位置内500公里之内的每个银行清单进行大范围的地理编码,并对照该清单进行检查。
这种方法很快就会过时并且失效。您需要的是Google Places API。他们有一个JS库,您可以利用它获取结果。
[Google Places JS API][1]
文本搜索请求Google地方信息文本搜索服务是一种网络 服务,该服务基于以下内容返回有关一组地点的信息: 字符串-例如“纽约披萨”或“渥太华附近的鞋店”。 该服务以匹配文本字符串的位置列表作为响应 以及已设置的任何位置偏差。搜索响应将 包括地点清单。您可以发送以下地点详情请求 有关响应中任何地方的更多信息。
我广泛使用了google api,并且发现它非常易于使用。只需调用API即可获取一系列结果,例如“餐厅”。下面的示例直接从Google Developer页面获取,并将绘制他们知道的Pyrmont地区的每家餐厅。 callback
方法中的' results '将是可与JS一起使用的JSON对象;
var map;
var service;
var infowindow;
function initialize() {
var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);
map = new google.maps.Map(document.getElementById('map'), {
center: pyrmont,
zoom: 15
});
var request = {
location: pyrmont,
radius: '500',
query: 'restaurant'
};
service = new google.maps.places.PlacesService(map);
service.textSearch(request, callback);
}
function callback(results, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
for (var i = 0; i < results.length; i++) {
var place = results[i];
createMarker(results[i]);
}
}
}