簡體   English   中英

如何使用lat和long從Google地方信息中獲取Place_id

[英]How to use lat and long to get Place_id from Google Places

我正在嘗試返回一系列商店的Google評論。 因此,每個商店都有一個唯一的Placeid,我首先需要找到該Placeid才能返回評論。 我所看到的所有教程都向我展示了如何在自動完成字段上使用getPlace()來獲取Placeid,但是我只有一個具有lat和long屬性的模型,需要使用這些屬性來獲取placeid。

Google在提供的示例

google.maps.places.Autocomplete(input).getPlace();

僅用於自動完成。 我希望可以使用getPlace()並以某種方式插入lat和long以返回該Placeid。

謝謝。

與您的坐標一起使用PlaceService .nearbySearch 它將返回多個結果,最有可能您正在尋找的結果是最接近您輸入坐標的結果。

service = new google.maps.places.PlacesService(map);
var request = {
  location: searchLoc,
  radius: '50'
};
service.nearbySearch(request, function callback(results, status) {
  if (status === google.maps.places.PlacesServiceStatus.OK) {
    var bounds = new google.maps.LatLngBounds();
    var minDistance = Number.MAX_VALUE;
    var closestMarker = null;
    for (var i = 0; i < results.length; i++) {
      var marker = createMarker(results[i]);
      var distance = google.maps.geometry.spherical.computeDistanceBetween(searchLoc, marker.getPosition());
      if (distance < minDistance) {
        minDistance = distance;
        closestMarker = marker;
      }
    }
    closestMarker.setMap(map);
    map.setCenter(closestMarker.getPosition());
  }
});

概念證明

生成的地圖的屏幕截圖

代碼段:

 function initialize() { var map = new google.maps.Map( document.getElementById("map_canvas"), { center: new google.maps.LatLng(37.4419, -122.1419), zoom: 13, mapTypeId: google.maps.MapTypeId.ROADMAP }); var infowindow = new google.maps.InfoWindow(); var NeimanMarcus = new google.maps.LatLng(32.768863635112375, -117.16740846633911); var Nordstrom = new google.maps.LatLng(32.76856592648975, -117.1685242652893); service = new google.maps.places.PlacesService(map); findNearestPlace(Nordstrom, service, map, infowindow); findNearestPlace(NeimanMarcus, service, map, infowindow); } google.maps.event.addDomListener(window, "load", initialize); function findNearestPlace(searchLoc, service, map, infowindow) { var request = { location: searchLoc, radius: '50' }; service.nearbySearch(request, function callback(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { var bounds = new google.maps.LatLngBounds(); var minDistance = Number.MAX_VALUE; var closestMarker = null; for (var i = 0; i < results.length; i++) { var marker = createMarker(results[i], map, infowindow); var distance = google.maps.geometry.spherical.computeDistanceBetween(searchLoc, marker.getPosition()); if (distance < minDistance) { minDistance = distance; closestMarker = marker; } } closestMarker.setMap(map); map.setCenter(closestMarker.getPosition()); } }); } function createMarker(place, map, infowindow) { var placeLoc = place.geometry.location; var marker = new google.maps.Marker({ position: place.geometry.location }); google.maps.event.addListener(marker, 'click', function() { map.setCenter(marker.getPosition()); map.setZoom(19); infowindow.setContent(place.name); infowindow.open(map, this); }); return marker; } 
 html, body, #map_canvas { height: 100%; width: 100%; margin: 0px; padding: 0px } 
 <script src="https://maps.googleapis.com/maps/api/js?libraries=geometry,places"></script> <div id="map_canvas"></div> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM