繁体   English   中英

从附近搜索获取PlaceID并显示在标记InfoWindow(JS Google Maps API)中

[英]Get PlaceID from nearbySearch and display in a marker InfoWindow ( JS Google Maps API )

我有这个查询

var service = new google.maps.places.PlacesService(map);
var request = {
  location: currentLocation,
  radius: '4828.03',
  type: ['workout gyms']
};
service.nearbySearch(request, callback);

而且我能够在每个位置成功放置一个标记,但是我想使该标记可单击,以使其在单击时在infoWindow中显示placeID。 有人知道我该怎么做吗?

修改后的相关问题代码: 地点附近搜索并未回调所有元素(返回地点详细信息)

function callback(results, status) {
  if (status === google.maps.places.PlacesServiceStatus.OK) {
    console.log("nearbySearch returned " + results.length + " results")
    for (var i = 0; i < results.length; i++) {
      // make a marker for each "place" in the result
      createMarker(results[i]);
    }
  } else console.log("error: status=" + status);
}


function createMarker(place) {
  var marker = new google.maps.Marker({
    map: map,
    position: place.geometry.location
  });
  google.maps.event.addListener(marker, 'click', function() {
    // display the place "name" and "place_id" in the infowindow.
    infowindow.setContent(place.name + "<br>" + place.place_id);
    infowindow.open(map, this);
  });
}

改良的小提琴

生成的地图的屏幕截图

代码段:

 function initMap() { var lng; var lat; var my_loc = new google.maps.LatLng(37.4419, -122.1419); map = new google.maps.Map(document.getElementById('map'), { center: my_loc, zoom: 10 }); geocoder = new google.maps.Geocoder(); infowindow = new google.maps.InfoWindow(); service = new google.maps.places.PlacesService(map); var request = { location: map.getCenter(), radius: 4828.03, type: ['workout gyms'] }; service.nearbySearch(request, callback); } function callback(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { console.log("nearbySearch returned " + results.length + " results") for (var i = 0; i < results.length; i++) { var id = results[i].place_id; createMarker(results[i]); } } else console.log("error: status=" + status); } function createMarker(place) { console.log("adding place " + place.name + " loc=" + place.geometry.location.toUrlValue(6)); var placeLoc = place.geometry.location; var marker = new google.maps.Marker({ map: map, position: place.geometry.location }); google.maps.event.addListener(marker, 'click', function() { infowindow.setContent(place.name + "<br>" + place.place_id); infowindow.open(map, this); }); } google.maps.event.addDomListener(window, "load", initMap); 
 html, body, #map { height: 100%; width: 100%; margin: 0px; padding: 0px } 
 <script src="https://maps.googleapis.com/maps/api/js?libraries=places"></script> <div id="map"></div> 

暂无
暂无

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

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