使用Google Maps API从用户的邮政编码中查找最近的酒吧

时间:2015-07-03 12:41:51

标签: javascript html5 google-maps

我正在开展一个项目,要求我在距用户邮政编码(zipcode)5英里的参数范围内找到最近的酒吧(酒吧)。

有没有办法使用Google Maps API接收数组中的数据,循环遍历它们并根据从数据中收到的lat和long来设置标记?

2 个答案:

答案 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]);
    }
  }
}