Google Places API - 未定义详细信息请求 [英] Google Places API - Places detail request undefined

查看:108
本文介绍了Google Places API - 未定义详细信息请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Google商家信息库检索地点详细信息。当您点击地点标记时,我希望能够看到地址,名称,网站等。

I'm trying to retrieve place details using the Google Places Library. When you click the place marker I want to be able to see the address, name, website etc.

我正在使用以下教程:
http://code.google.com/apis/maps/documentation/javascript/places.html

I'm using the following tutorial: http://code.google.com/apis/maps/documentation/javascript/places.html

一切似乎进展顺利。在我的标记中,我可以显示名称和评级,但地址,网站和电话号码都显示为未定义。这是因为谷歌没有我在这些地方要求的信息吗?或者我做错了什么?

All seems to be going pretty well. In my marker I can display the name and the rating but the address, website and phone number all appear as 'undefined'. Is this because Google doesn't have the information I'm requesting on these places? Or have I done something wrong?

这是我正在使用的代码:
var map;
var infowindow;

Here's the code I'm using: var map; var infowindow;

  function initialize() {
    var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);

    map = new google.maps.Map(document.getElementById('map_canvas'), {
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: pyrmont,
      zoom: 15
    });

    var request = {
      location: pyrmont,
      radius: 5000,
      types: ['bar']
    };
    infowindow = new google.maps.InfoWindow();
    service = new google.maps.places.PlacesService(map);
    service.search(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
    });

    google.maps.event.addListener(marker, 'click', function() {
      infowindow.setContent(place.name + "<br />" + place.formatted_address +"<br />" + place.website + "<br />" + place.rating + "<br />" + place.formatted_phone_number);
      infowindow.open(map, this);
    });
  }

我们将非常感谢任何帮助或想法。

Any help or ideas will be greatly appreciated.

干杯。

JA

推荐答案

您正在进行地方搜索,它不会返回您正在使用的所有字段:

You're doing a Place Search, which doesn't return all of the fields that you're using:

http://code.google.com/apis/maps/documentation/javascript/places.html#place_search_responses

为了获得地址,网站等,您还需要拨打 place.getDetails(),传递Place的引用。请参阅:

In order to get the address, website, etc, you'll also need to call place.getDetails(), passing the Place's reference. See:

http://code.google.com/apis/maps/documentation/javascript/places.html#place_details_requests

粗略地说,您的代码会发生变化to:

Roughly, your code would change to:

  function createMarker(place) {
    var placeLoc = place.geometry.location;
    var marker = new google.maps.Marker({
      map: map,
      position: place.geometry.location
    });

    var request = { reference: place.reference };
    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);
      });
    });
  }

这篇关于Google Places API - 未定义详细信息请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆