google places api / google maps:“listing by ...”不会重置 - 让地图区域变得混乱

时间:2012-06-14 14:00:57

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

我有一个使用places API的网站pune.org。正如您所看到的那样,如果我选择标记,则按行继续添加列表并最终使整个地图区域无用。

我如何重置列表,或者理想情况下只显示当前所选标记的列表?

谢谢, 和Sandeep

1 个答案:

答案 0 :(得分:1)

每次地图平移时,您都会在代码中多次实例化Places服务。您需要在开头设置一个名为service的全局变量,然后实例化一次Places服务(*在您的地图初始化期间是合适的)。然后你可以简单地在其他函数中调用service.search方法,而不是一遍又一遍地实例化服务。

所以:

var service;
\\Rest of other global variables
function initializeMap(initialLat, initialLng, detectCurrentLocation, radius,
        zoomLevel, defaultType) {
    initialLocation = new google.maps.LatLng(initialLat, initialLng);
    geocoder = new google.maps.Geocoder();

    var myOptions = {
        zoom : zoomLevel,
        mapTypeId : google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    service = new google.maps.places.PlacesService(map); //Only do this once!
    ...//rest of your code
}

然后在代码中删除service = new google.maps.places.PlacesService(map);的其他实例,只调用service.search(request, callback);