对Google Maps v3 API getDetails()函数感到困惑

时间:2012-08-07 13:49:47

标签: javascript google-maps google-maps-api-3 google-maps-markers google-places-api

我正在编写一份申请,以便通过resturants&使用谷歌地图和其他景点Places API。我正在使用谷歌地方搜索功能来帮助获取信息

var service = new google.maps.places.PlacesService(map);
service.search(request, callback);

但我意识到它不会返回我需要的值,比如我使用搜索创建的标记的格式化地址。现在我感到困惑的是获得使用getDetails()函数所需的额外信息。这应该取代我上面使用的搜索功能还是应该在那之后放置一段时间?当谷歌在他们的网站上描述它时,它看起来应该只是替换搜索功能,因为在示例中它采用相同的确切参数并且运行与搜索功能相同但如果我这样做,那么它根本不会返回任何一点都不。 以下是我的一些代码,以帮助解释我想要完成的任务。

  //Function for finding destination types. Receives destination type as a string.
function findDestinationType(where)
{
    request = null;
    var request = 
    {
        location: point,
        radius: 2500,
        types: [where]
    };

    var service = new google.maps.places.PlacesService(map);
    service.getDetails(request, callback);
}
//Call Back to fill array with markers & locations 
function callback(results, status) 
{
    if (status == google.maps.places.PlacesServiceStatus.OK) 
    {
        initialize();
        iterator = 0;
        markerArr = [];
        for (var i = 0; i < results.length; i++) 
        {
            markerArr.push(results[i].geometry.location);
            result = results[i];
            createMarker(results[i]);
        }
    }
    else
    {
        alert("Sorry, there are no locations in your area");
    }
}
//Function to create marker
function createMarker(place)
{
    var marker = new google.maps.Marker(
    {
        position: markerArr[iterator],
        map: map,
        draggable: false,
        animation: google.maps.Animation.DROP
    })
    //alert(markerArr[iterator]);
    markersA.push(marker);
    iterator++;
    google.maps.event.addListener(marker, 'click', function()
    {
        console.log('clicked');
        infowindow.setContent(place.name);
        infowindow.open(map, this);
        //directionsDisplay.setMap(map);
    });
}

1 个答案:

答案 0 :(得分:4)

你的假设是错误的,getDetails()期望不是相同的参数,它希望引用到一个地方。

参考您将获得一个地方搜索的结果,它是一个标记。

因此,当您搜索地点时,工作流程就是:

  1. 使用places.search()获取有关该地点的基本信息
  2. 当您需要更多信息时,请使用places.getDetails()和步骤1中的参考作为参数