Google Places API - 地址和电话号码

Google Places API- Address and phone number?

本文关键字:电话号码 地址 Places API Google      更新时间:2023-09-26

我正在尝试通过Google地方信息创建列表和地图。下面显示了制造商和本地商店的列表。现在它只显示商店的名称。如何包含地址和电话?我会添加另一个对象规范吗?

更新:根据此链接:谷歌地方API - 地点详细信息请求未定义

应该添加place.getDetails()。但是,我的脚本现在只显示一个市场,而不是细节。这是怎么回事?

更新更新:

此处的 HTML 示例:http://simplecomputerblog.com/searchtest1.html

  <script src="https://maps.googleapis.com/maps/api/js?v=3.exp&libraries=places"></script>
    <script>
var map, placesList;
var infowindow;
var service; //declare globally

function initialize() {
  var pyrmont = new google.maps.LatLng(40.062664, -83.069101);
  map = new google.maps.Map(document.getElementById('map-canvas'), {
    center: pyrmont,
    zoom: 15
  });
  var request = {
    location: pyrmont,
    radius: 500,
    types: ['store']
  };
  infowindow = new google.maps.InfoWindow();
   placesList = document.getElementById('places');
 service = new google.maps.places.PlacesService(map);
  service.nearbySearch(request, callback);
service.getDetails(request, callback);
}
function callback(results, status) {
  if (status == google.maps.places.PlacesServiceStatus.OK) {
    for (var i = 0; i < results.length; i++) {
      createMarker(results[i]);
    }
  }
}
function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
  map: map,
  position: place.geometry.location
 });
var request = { reference: place.place_id };
service.getDetails(request, function(details, status) {
  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent(details.name + "<br />" + details.formatted_address +"<br />" + details.website + "<br />" + details.rating + "<br />" + details.formatted_phone_number);
    infowindow.open(map, this);
   });
 });
 placesList.innerHTML += '<li>' + place.name + '</li>';
}

google.maps.event.addDomListener(window, 'load', initialize);
    </script>

从文档中,您可以通过执行以下操作轻松了解您获取的地点的numberaddress

  function createMarker(place) {
   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+place.formatted_address+place.formatted_phone_number);
    infowindow.open(map, this);
   });
   placesList.innerHTML += '<li>' + place.name + '</li>';
 }

再次来自文档:

信息窗口的内容可能包含文本字符串、片段 的 HTML 或 DOM 元素。要设置内容,请指定它 在信息窗口选项中或在信息窗口中调用 setContent() 明确地。

编辑-正如正确指出的那样,nearbySearch的结果不会在result对象中返回formatted_addressformatted_phone_number,为此,您必须发出另一个getdetails请求,就像您已经合并到代码中一样。它可能看起来像(未经测试):

 function createMarker(place) {
  var placeLoc = place.geometry.location;
  var marker = new google.maps.Marker({
  map: map,
  position: place.geometry.location
 });
var request = { placeId: place.place_id };
service.getDetails(request, function(details, status) {
  google.maps.event.addListener(marker, 'click', function() {
    infowindow.setContent(details.name + "<br />" + details.formatted_address +"<br />" + details.website + "<br />" + details.rating + "<br />" + details.formatted_phone_number);
    infowindow.open(map, this);
   });
 });
 placesList.innerHTML += '<li>' + place.name + '</li>';
}

重要的是,service可用于您使用它的函数的范围。所以在所有函数之外声明它并像这样适当地初始化它:

var service; //declare globally
function intialize(){
   ...
   service = new google.maps.places.PlacesService(map); //initialize here
   ...
}

因此,您可以相应地格式化该内容字符串并填充信息窗口。希望它能让你开始正确的方向。