Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript getDetails中的引用值出错-google places搜索_Javascript_Google Maps - Fatal编程技术网

Javascript getDetails中的引用值出错-google places搜索

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

下面是我的代码。我想以列表的形式获得一个地方的所有细节,如格式化地址等。但是我在getDetails()和reference中遇到了错误。如果有人能告诉我我的错误在哪里,我将不胜感激

    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>';