繁体   English   中英

根据针对邮政编码的邻近度查询获取地点

[英]Obtaining places based on proximity query against zip code

我在弄清楚如何完成特定类型的Google Places API请求方面遇到困难。

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

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

因此,总而言之,我只希望可以将一个api请求转换为包含邮政编码为20英里以内的可用医院的数组的PHP ,否则为一个空数组。 我也可以将存在医院的布尔值或否则为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);
    });
  }

附近搜索”或“ 文本搜索”服务将更适合您的用例,因为您希望获得多家医院,而不仅仅是一家医院(“查找位置”仅返回一个位置)。

尝试以下代码示例,其中显示了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);
    });
}

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM