Javascript getDetails中的引用值出错-google places搜索
下面是我的代码。我想以列表的形式获得一个地方的所有细节,如格式化地址等。但是我在getDetails()和reference中遇到了错误。如果有人能告诉我我的错误在哪里,我将不胜感激Javascript getDetails中的引用值出错-google places搜索,javascript,google-maps,Javascript,Google Maps,下面是我的代码。我想以列表的形式获得一个地方的所有细节,如格式化地址等。但是我在getDetails()和reference中遇到了错误。如果有人能告诉我我的错误在哪里,我将不胜感激 var map, placesList; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); map = new google.maps.Ma
var map, placesList;
function initialize() {
var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316);
map = new google.maps.Map(document.getElementById('map-canvas'), {
center: pyrmont,
zoom: 17
});
var request = {
location: pyrmont,
radius: 500,
types: ['store']
};
placesList = document.getElementById('places');
var service = new google.maps.places.PlacesService(map);
service.nearbySearch(request, callback);
var request1 = {
reference: 'CnRkAAAAGnBVNFDeQoOQHzgdOpOqJNV7K9-c5IQrWFUYD9TNhUmz5-aHhfqyKH0zmAcUlkqVCrpaKcV8ZjGQKzB6GXxtzUYcP-muHafGsmW-1CwjTPBCmK43AZpAwW0FRtQDQADj3H2bzwwHVIXlQAiccm7r4xIQmjt_Oqm2FejWpBxLWs3L_RoUbharABi5FMnKnzmRL2TGju6UA4k'
};
service.getDetails(request1, createMarkers);
}
function callback(results, status, pagination) {
if (status != google.maps.places.PlacesServiceStatus.OK) {
return;
} else {
createMarkers(results);
if (pagination.hasNextPage) {
var moreButton = document.getElementById('more');
moreButton.disabled = false;
google.maps.event.addDomListenerOnce(moreButton, 'click',
function () {
moreButton.disabled = true;
pagination.nextPage();
});
}
}
}
function createMarkers(places, status) {
if (status == google.maps.places.PlacesServiceStatus.OK) {
var bounds = new google.maps.LatLngBounds();
for (var i = 0, place; place = places[i]; i++) {
var image = {
url: place.icon,
size: new google.maps.Size(71, 71),
origin: new google.maps.Point(0, 0),
anchor: new google.maps.Point(17, 34),
scaledSize: new google.maps.Size(25, 25)
};
var marker = new google.maps.Marker({
map: map,
icon: image,
title: place.name,
position: place.geometry.location
});
placesList.innerHTML += '<li>' + place.name + '<br>' + place.formatted_address + '</li>';
bounds.extend(place.geometry.location);
map.fitBounds(bounds);
}
}
}
google.maps.event.addDomListener(window, 'load', initialize);
var映射,placesList;
函数初始化(){
var pyrmont=new google.maps.LatLng(-33.8665433151.1956316);
map=new google.maps.map(document.getElementById('map-canvas'){
中心:皮尔蒙特,
缩放:17
});
var请求={
地点:皮尔蒙特,
半径:500,
类型:['store']
};
placesList=document.getElementById('places');
var service=newgoogle.maps.places.PlacesService(地图);
服务.nearbySearch(请求、回调);
var request1={
参考资料:“CNRKAAAGNBVNFDEQOOQHZGDOPOQJNV7K9-c5IQrWFUYD9TNhUmz5-aHhfqyKH0zmAcUlkqVCrpaKcV8ZjGQKzB6GXxtzUYcP-muHafGsmW-1CWJTPBCMK43AZPAW0FRTQADQADJ3H2BZWHVIXQICCM7R4XIQMJT-OQHFQYKHKH0ZMCL3L\U ROUBHARABI5FMNZMR2TGJU6UA4K”
};
getDetails(request1,createMarkers);
}
函数回调(结果、状态、分页){
if(status!=google.maps.places.PlacesServiceStatus.OK){
返回;
}否则{
创建标记(结果);
if(分页。下一页){
var moreButton=document.getElementById('more');
moreButton.disabled=false;
google.maps.event.AddDomainListenerOnce(更多按钮,'点击',
函数(){
moreButton.disabled=true;
分页。下一页();
});
}
}
}
函数createMarkers(位置、状态){
if(status==google.maps.places.PlacesServiceStatus.OK){
var bounds=new google.maps.LatLngBounds();
for(var i=0,place;place=places[i];i++){
变量图像={
url:place.icon,
大小:新谷歌地图大小(71,71),
来源:新google.maps.Point(0,0),
主播:新google.maps.Point(17,34),
scaledSize:new google.maps.Size(25,25)
};
var marker=new google.maps.marker({
地图:地图,
图标:图像,
标题:place.name,
位置:place.geometry.location
});
placesList.innerHTML+=''+place.name+'
'+place.formatted_address+' ';
扩展(place.geometry.location);
映射边界(bounds);
}
}
}
google.maps.event.addDomListener(窗口“加载”,初始化);
您使用for loop
在函数createMarkers
中迭代位置
,但只有一个对象:
Object {
address_components: Array[6],
formatted_address: "5/48 Pirrama Road, Pyrmont NSW, Australia",
formatted_phone_number: "(02) 9374 4000",
geometry: Object,
icon: "http://maps.gstatic.com/mapfiles/place_api/icons/generic_business-71.png"…}
没有数组属性。我刚刚删除了您代码周围的for loop
,获得了列表中的地址,并正确地缩放到该地址
你只要求一项特定的服务。见文件:
除了提供一个区域内的地点列表外,地点服务还可以返回特定地点的详细信息。在地点搜索响应中返回地点后,可以使用其引用属性请求有关该地点的其他详细信息,例如其完整地址、电话号码、用户评级和评论等
您正在使用相同的函数处理不同的对象createMarker()
。因此,对于某些结果,您将获得未定义的格式化的\u地址。在这些情况下,您可以使用邻近
属性:
placesList.innerHTML += '<li>' + place.name + '<br>' +
(place.formatted_address ? place.formatted_address : place.vicinity)
+ '</li>';
placesList.innerHTML+=''+place.name+'
'+
(place.formatted_地址?place.formatted_地址:place.neighborary)
+“ ”;
function callback(results, status, pagination) {
if (status != google.maps.places.PlacesServiceStatus.OK) {
return;
} else {
for (var i = 0; i < results.length; i++) {
var markerPlace = results[i];
createMarkers(markerPlace, status);
}
...
placesList.innerHTML += '<li>' + place.name + '<br>' +
(place.formatted_address ? place.formatted_address : place.vicinity)
+ '</li>';