代码之家  ›  专栏  ›  技术社区  ›  somejkuser

基于邮政编码的邻近查询获取地点

  •  0
  • somejkuser  · 技术社区  · 7 年前

    我很难弄清楚如何完成一种特定类型的任务 Google Places API 要求

    我有一个 zipcode 我想知道是否有 any hospitals within 20 miles of the zipcode

    我发现了下面的例子 maps 编码并将请求更改为 hospitals 但这并没有达到我想要的效果。

    总之,我只想要一个可以转换为的api请求 PHP 它包含一个邮政编码20英里以内的可用医院阵列,或者一个空阵列。我也可以将“是”或“假”的布尔值作为输出

        var sydney = new google.maps.LatLng(-33.867, 151.195);
    
        infowindow = new google.maps.InfoWindow();
    
        map = new google.maps.Map(
            document.getElementById('map'), {center: sydney, zoom: 15});
    
        var request = {
          query: 'hospitals',
          fields: ['name', 'geometry'],
        };
    
        service = new google.maps.places.PlacesService(map);
    
        service.findPlaceFromQuery(request, function(results, status) {
          if (status === google.maps.places.PlacesServiceStatus.OK) {
            for (var i = 0; i < results.length; i++) {
              createMarker(results[i]);
            }
    
            map.setCenter(results[0].geometry.location);
          }
        });
      }
    
      function createMarker(place) {
        var marker = new google.maps.Marker({
          map: map,
          position: place.geometry.location
        });
    
        google.maps.event.addListener(marker, 'click', function() {
          infowindow.setContent(place.name);
          infowindow.open(map, this);
        });
      }
    
    0 回复  |  直到 7 年前
        1
  •  0
  •   evan    7 年前

    这个 Nearby Search 或 Text Search 服务将更适合您的用例,因为您希望获得多家医院,而不仅仅是一家(Find Place仅返回一家医院)。

    请尝试下面的代码示例,其中显示了20英里以内的医院 Pyrmont NSW 2009 .请注意,位置必须是 LatLng 对象,它不能是邮政编码,但通过文本搜索,您可以将其添加到查询中。然后设定 type 到 hospital .

    var map;
    var service;
    
    function initialize() {
        var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316);
    
        map = new google.maps.Map(document.getElementById('map'), {
            center: pyrmont,
            zoom: 13
        });
    
        var request = {
            location: pyrmont,
            radius: '32186',
            query: '2009',
            type: 'hospital'
        };
    
        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]);
            }
        }
    }
    
    function createMarker(place) {
        var marker = new google.maps.Marker({
            map: map,
            position: place.geometry.location,
            title: place.name
        });
    
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(place.name);
            infowindow.open(map, this);
        });
    }
    

    希望这有帮助!

    推荐文章