我引用了Google Place,并使用Javascript API获取地点详细信息。
只要页面上有地图,它就能正常工作。
但是如果没有地图 - 我只想要这个地方的细节 - 它会因为没有定义变量地图而中断。
“通过调用服务的getDetails()方法请求放置详细信息。”
service = new google.maps.places.PlacesService(map);
service.getDetails(request, callback);
如果我遗漏了map变量,我得到:“Uncaught TypeError:无法读取未定义的属性'innerHTML'”
我可以提出服务器端请求,但您可以执行此操作的次数有限。
Javascript中是否有一种方法可以在没有地图的情况下获取地点详细信息?
答案 0 :(得分:5)
在使用了这个之后,我想出的解决方案是创建一个新的地图对象而不将其附加到文档中。这个API似乎很好。
let map = new google.maps.Map(document.createElement('div'));
然后使用虚拟地图对象发出您的请求,与之前相同。
this.googlePlaces = new google.maps.places.PlacesService(map);
this.googlePlaces.getDetails(request, callback);
答案 1 :(得分:-1)
不需要地图,您可以将地点api与您放置的任何选择器一起使用,如果您想要获得特定的地点,请使用 自动填充
var options = {
types: ["(cities)"]
}
this.autocompletePlaces = new google.maps.places.Autocomplete(document.getElementById('txtPlaces'),options);
google.maps.event.addListener(this.autocompletePlaces, 'place_changed',function(){
var place = this.autocompletePlaces.getPlace();
var address = this.autocompletePlaces.formatted_address;
});
如果您要查找带有搜索字词的地点列表,请使用
this.autocompletePlaces = new google.maps.places.SearchBox(document.getElementById('txtPlaces'),options);
this.autocompletePlaces.addListener('places_changed', this.attachSelectedPlace.bind(self));
在最后一个案例中,你将得到一个places数组而不是一个地方。 希望有所帮助