我正在开展一个项目,要求我在距用户邮政编码(zipcode)5英里的参数范围内找到最近的酒吧(酒吧)。
有没有办法使用Google Maps API接收数组中的数据,循环遍历它们并根据从数据中收到的lat和long来设置标记?
答案 0 :(得分:2)
您可以在此处找到有关Google Maps API此特定功能的信息: https://developers.google.com/places/webservice/search
此Web服务允许您在指定位置和搜索半径时使用关键字进行搜索,并返回与json或xml文档中的这些参数匹配的位置列表。
您的示例如下所示:
https://maps.googleapis.com/maps/api/place/textsearch/json?key=your_api_key&query="bar"&location=lat,lon&radius=8000
您需要替换
your_api_key
,其中包含适用于您应用的Google Maps API密钥(您需要一个人使用他们的网络服务)
lat,lon
,其中包含用户坐标,您可以使用地理编码网络服务找到用户agmangas建议
8000
具有实际搜索半径,以米为单位(5英里约为8公里)。
答案 1 :(得分:0)
首先,您必须从用户的邮政编码中获取经度和纬度,这可以使用Geocoding Service来实现。
一旦你有了这个,我就说你需要使用Places Library(免责声明:我从未真正使用过它)。
Nearby Search 部分下面有一个代码示例,我认为或多或少符合您的需求(您需要稍微调整一下):
var map;
var service;
var infowindow;
function initialize() {
// Replace with the latitude and longitude
// you got in a Geocoding Service request
var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);
map = new google.maps.Map(document.getElementById('map'), {
center: pyrmont,
zoom: 15
});
// Replace the place type you need ("bar")
// Replace the radius (5 miles)
var request = {
location: pyrmont,
radius: '500',
types: ['store']
};
service = new google.maps.places.PlacesService(map);
service.nearbySearch(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]);
}
}
}