【问题标题】:Obtaining places based on proximity query against zip code根据邮政编码的邻近查询获取地点
【发布时间】:2019-07-17 20:10:30
【问题描述】:

我很难弄清楚如何完成特定类型的 Google Places API 请求。

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

我找到了以下示例 maps 代码并将请求更改为 hospitals 但这并没有执行我想要的。

所以,总而言之,我只想要一个 api 请求,我可以转换为 PHP,其中包含一个邮政编码 20 英里范围内的可用医院数组,否则是一个空数组。我也可以将存在的布尔值作为输出,否则为 false

    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);
    });
  }

【问题讨论】:

    标签: php google-maps google-places-api google-places proximity


    【解决方案1】:

    Nearby SearchText Search 服务更适合您的用例,因为您想要获得多家医院而不仅仅是一家(Find Place 仅返回一个地方)。

    试试下面的代码示例,它显示了Pyrmont NSW 2009 20 英里范围内的医院。请注意,位置必须是 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);
        });
    }
    

    希望这会有所帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-11
      • 1970-01-01
      相关资源
      最近更新 更多