在谷歌地图中通过标记ID获取标记customInfo

时间:2016-09-21 12:53:29

标签: javascript jquery google-maps google-maps-api-3

当我点击地图页面上的链接(不是自己标记)时,我需要在地图上打开信息窗口。到目前为止,这是我的代码,

var marker = new MarkerWithLabel({
                map: resultsMap,
                id: label,
                position: latlng,
                title: "Address",
                //  radius: int_radius ,
                draggable: false,
                labelAnchor: new google.maps.Point(10, 35),
                labelContent: label,
                labelClass: "labels",
                labelInBackground: false,
                mapTypeId: google.maps.MapTypeId.ROADMAP,
                icon: image,
                customInfo: "dynamic data for each marker"
        }); 

并调用函数

function bindInfoWindow(resultsMap, marker, infoWindow) {
    google.maps.event.addListener(marker, 'click',
        function(){
            infoWindow.setContent(marker.customInfo);
            infoWindow.open(resultsMap,marker);
        });

        $(document).on('click','.store-title', function(){ 
            var linkId = $(this).attr('id'); 
            infoWindow.setContent(marker.customInfo);
            infoWindow.open(resultsMap,marker);

        });
} 

在我的情况下,我无法使用数组来存储标记。有没有办法通过使用如下条件获得marker.customInfo?请注意当我点击标记时它可以工作。我需要它用于后面的onclick功能。

infoWindow.setContent(marker.customInfo where marker.id==linkId);

1 个答案:

答案 0 :(得分:0)

这可能会有效,请将其保存在您目前拥有的bindInfoWindow内:

$(document).on('click','.store-title', function() { 
    var linkId = $(this).attr('id');
    if (linkId == marker.id) {
        google.maps.event.trigger(marker, 'click');
    }
});

注意我将marker作为数据参数传递给click事件句柄,但您可能不需要这样做。 - 似乎不需要。

然后我只是触发该标记的点击,而不是重复你已经在标记的点击处理程序中获得的代码。

我假设您添加到每个标记的id属性与您在链接上读取的'id'属性相同。如果没有,您可以在标记和链接上找到相同的属性。