jQuery谷歌地图按Id获取标记

jQuery Google Maps Get Marker By Id

本文关键字:获取 Id 谷歌地图 jQuery      更新时间:2023-09-26

我目前有以下代码:

jQuery.each(json,function(index,value){
            var id =json[index]["id"];
            var location =json[index]["location"];
            var tel =json[index]["tel"];
            var lat=json[index]["lat"];
            var lng=json[index]["lng"];
            marker = new google.maps.Marker({
              id:id,
              position: new google.maps.LatLng (lat, lng),
              icon: {
                    path: google.maps.SymbolPath.CIRCLE,
                    fillOpacity: 1,
                    fillColor: '#002664',
                    strokeWeight: 1, 
                    strokeColor: '#FFFFFF',
                    scale: 5 //pixels
                },
              map: map
            });
            google.maps.event.addListener(marker, 'click', function() {
                jQuery('.office-information').slideUp(300);
                if(!jQuery('#office-info-'+id).is(':visible')){
                    jQuery('#office-info-'+id).slideDown(300);
                }
            });
            google.maps.event.addListener(marker, 'click', function() {
            });
            jQuery('.get-direction').on('click', function(){
                var markerID = this.id.replace( /[^'d.]/g,'');
                console.log(marker);
            });
      });

问题领域是:

jQuery('.get-direction').on('click', function(){
                    var markerID = this.id.replace( /[^'d.]/g,'');
                    console.log(marker);
                });

基本上,当我点击一个get-direction类的链接时,我会获取它的id,并从中去掉除数字之外的所有内容,这就留下了标记id。但是我如何通过id获得标记呢?实际上,我只需要标记上的经纬度。

非常感谢任何帮助。

您可以创建一个全局关联数组,并将所有标记存储在其中。例如,像这个

var arrMarkers = {};
jQuery.each(json,function(index,value){
    ...
    marker = new google.maps.Marker({
         ...
    });
    arrMarkers[id] = marker;
    ...
    jQuery('.get-direction').on('click', function(){
            var markerID = this.id.replace( /[^'d.]/g,'');
            console.log(arrMarkers[markerID]);
        });
}