谷歌放置图书馆没有地图

use*_*409 67 google-maps google-places

我正在尝试使用Google地方信息库来获取附近的搜索请求:https: //developers.google.com/maps/documentation/javascript/places#place_search_requests

我只想拉出json响应并将其放入html列表中,我现在想在地图上显示结果或其他内容.我根本不想使用地图.但在文档中它声明必须有一张地图

service = new google.maps.places.PlacesService(**map**);
Run Code Online (Sandbox Code Playgroud)

为了将它作为PlacesService函数中的参数传递.我现在做的是添加一个高度为0的地图但它仍然消耗了大量的内存(我开发了一个sencha touch 2应用程序,内存很重要).有没有地图使用附近的搜索请求的解决方法?我不想使用Google Places API,因为它不支持JSONP请求.

Dr.*_*lle 76

如记录所述,PlacesService接受地图或节点作为参数来呈现结果的属性.

所以你只需要使用节点(一个节点是一个html元素)而不是地图.

请注意:隐藏属性违反了places-policies(当用作参数时也隐藏了地图,因为地图将显示属性)

这也可能对您有意义:Google Places API是否违反了TOC?


示例:简而言之

如果你正在使用jQuery:

var service = new google.maps.places.PlacesService($('#tag-id').get(0));
Run Code Online (Sandbox Code Playgroud)

如果是普通的Javascript:

var service = new google.maps.places.PlacesService(document.createElement('div'));
Run Code Online (Sandbox Code Playgroud)

然后像往常一样继续使用示例代码的其余部分:

  service.nearbySearch(request, callback);
Run Code Online (Sandbox Code Playgroud)

示例:使用返回的详细信息

这个例子在jsFiddle上的现场演示.

注意:此示例使用jQuery.

<ul class="reviews__content" id="reviews__content">
</ul>
<div id="service-helper"></div>

<script async defer
src="https://maps.googleapis.com/maps/api/js?key=GOOGLE_API_KEY_HERE&libraries=places&callback=getRelevantGoogleReviews">
</script>
<script type="text/javascript">
   window.getRelevantGoogleReviews = function(){
     var service = new google.maps.places.PlacesService($('#service-helper').get(0)); // note that it removes the content inside div with tag '#service-helper'

     service.getDetails({
         placeId: 'ChIJAwEf5VFQqEcRollj8j_kqnE'  // get a placeId using https://developers.google.com/places/web-service/place-id
        }, function(place, status) {
            if (status === google.maps.places.PlacesServiceStatus.OK) {
              var resultcontent = '';
              for (i=0; i<place.reviews.length; ++i) {
                //window.alert('Name:' + place.name + '. ID: ' + place.place_id + '. address: ' + place.formatted_address);
                resultcontent += '<li class="reviews__item">'
                resultcontent += '<div class="reviews__review-er">' + place.reviews[i].author_name + '</div>';
                var reviewDate = new Date(place.reviews[i].time * 1000);
                var reviewDateMM = reviewDate.getMonth() + 1;
                var reviewDateFormatted = reviewDate.getDate() + '/' + reviewDateMM + '/' + reviewDate.getFullYear(); 
                resultcontent += '<div class="reviews__review-date">' + reviewDateFormatted + '</div>';
                resultcontent += '<div class="reviews__review-rating reviews__review-rating--' + place.reviews[i].rating +'"></div>';
                if (!!place.reviews[i].text){
                  resultcontent += '<div class="reviews__review-comment">' + place.reviews[i].text + '</div>';
                }
                resultcontent += '</li>'
              }
              $('#reviews__content').append(resultcontent);
            }
        });
    }
</script>
Run Code Online (Sandbox Code Playgroud)

  • 又名`var map = new google.maps.Map(document.createElement('div'))` (16认同)
  • 截至1月12日,根据[文档](https://developers.google.com/places/web-service/policies)**"如果您的应用程序在页面或视图上显示Google Places API Web服务数据如果没有显示Google地图,则必须显示带有该数据的"Powered by Google"徽标"**.但是我在文档中找不到如何在不指定地图的情况下初始化场所服务? (4认同)
  • 节点在这里意味着什么,它是否意味着一个html元素? (2认同)
  • 如果你正在使用jquery,这正是你需要做的事情:places = new google.maps.places.PlacesService($('#myDiv').get(0)); (2认同)

ber*_*c96 5

如果您想从 place_id 获取位置数据,您可以使用 Geocoder 类来完成:这里是文档。使用此类,您可以将 place_id 传递给 geocode() 方法并获取坐标和其他位置数据。