Javascript 如何访问';标记';google.map对象中的对象?

Javascript 如何访问';标记';google.map对象中的对象?,javascript,google-maps-api-3,drupal-7,Javascript,Google Maps Api 3,Drupal 7,我在Drupal中使用谷歌地图(但我认为这与我的问题无关)。 在视图(Drupal中的页面显示)上,我在谷歌地图上显示标记。 我在一个外部块中显示地图上标记的链接 我已经看过了,但我需要的是另一种方式: 我想,当我点击地图标记时,我想显示(或强调)相关链接(和额外数据) 在Chrome控制台中,mymarker对象如下所示: Object {text: "mytext", latitude: "46.3611897222", longitude: "1.60658955574", title:

我在Drupal中使用谷歌地图(但我认为这与我的问题无关)。 在视图(Drupal中的页面显示)上,我在谷歌地图上显示标记。 我在一个外部块中显示地图上标记的链接

我已经看过了,但我需要的是另一种方式: 我想,当我点击地图标记时,我想显示(或强调)相关链接(和额外数据)

在Chrome控制台中,mymarker对象如下所示:

Object {text: "mytext", latitude: "46.3611897222", longitude: "1.60658955574", title: "Title of mymarker", markername: "mymarkername"…}
"": "mytext"
   latitude: "46.3611897222"
   longitude: "1.60658955574"
|> marker: Vl
   markername: "mymarkername"
   offset: ""
|> opts: Object
   text: "mytext"
   title: "Title of mymarker"
注:
|>
代表三角形可展开图标

我需要瞄准那个标记对象,而不是mymarker对象

标记部分包含:

marker: Vl
|> Be: Object
|> __e3_: Object
|> __gm: Mf
|> anchorPoint: T
|> changed: function (a){a in e&&(delete this[Gc],d.k[Ee(this)]=this,hP(d))}
   clickable: true
   closure_uid_887014485: 9
|> gm_accessors_: Object
|> gm_bindings_: Object
|> icon: om.MarkerImage
|> map: Sl
|> position: R
   shadow: null
   title: "Title of mymarker"
   visible: true
如果我尝试
mymarker.latitude
,我会得到纬度值

如果我尝试
$(mymarker).opts
,我会得到“opts”对象

但我需要的是获得“标记”部分,但我无法获得: 我试过了

console.log(mymarker.marker)
=>未定义

console.log($(mymarker.marker)
=>$(mymarker)对象

console.log($(mymarker.get('marker))
=>未定义

我不知道什么是以及如何转换为“Vl”,这似乎是标记对象的类型(“标记”类型?)。 我尝试了我在任何地方都找不到关于如何访问这些数据的帮助

编辑-我编辑了我的js代码以显示我需要的内容

编辑-多亏@Dr.Molle和AlexK,我终于实现了我的目标

这是更新版本:我有一个Drupal视图,显示带有标记的google地图,还有一个“附件”,在不同的块中的html列表中显示相同的标记。 单击标记时,我希望显示相应的列表元素(并隐藏其他元素)


我不熟悉drupal和这个插件,但问题似乎不是如何访问标记,而是何时访问标记(
google.maps.Marker
-实例)

当函数运行时,通过设置,诸如
纬度
经度
等标量值已经可用,但google.map.marker将在稍后创建

展开控制台时可以看到标记,但展开对象时会看到对象的状态,而不是调用
控制台时对象的状态。log

可能的解决办法: 将
addmarker
-侦听器添加到映射(将标记添加到映射时将执行),在该映射中分配自定义单击侦听器:

(function ($) {
    Drupal.behaviors.gmap = {
        attach: function (context, settings) {
          //reference for the map
          var map=Drupal.gmap.getMap('auto1map');

          //bind addmarker-handler, the marker is available as callback-argument  
          map.bind('addmarker', function (m) {
            //remove listeners set automatically by the library  
            google.maps.event.clearListeners(m.marker, 'click');
            //add  your custom listener
            google.maps.event.addListener(m.marker, 'click',function(){
              alert('This marker is placed \n@'+this.getPosition().toString());
            });
          });
        }
    }
})(jQuery);

奇怪的是,可以通过设置设置不同类型的点击行为(例如,创建信息窗口和ajax回调),但我没有找到定义简单回调函数的选项。

这绝对是非常棒的,请注意:这确实是一个使用正确侦听器的问题!也许这是离题的,但是如果你不了解Drupal,你怎么可能知道(不是猜测,我现在非常尊重你:D)问题是关于addmarker侦听器的,更重要的是:我无法访问marker对象,但在控制台中它是可用的,具有所有正确的值。您如何将这两个事实与您使用addlistener的天才想法联系起来。我愿意学习如何调试这种头痛的问题。无论如何,谢谢。我使用了这个带有地图和标记的简单drupal页面:并添加了您的代码来查看那里发生了什么。很明显,当标记作为另一个对象的属性可见时,这是一个计时问题,但当我试图直接访问它时,它是未定义的()。我通过检查加载的页面脚本找到的addmarker侦听器(GIcon manager)感谢您的额外解释!我只是后悔我没有足够的“学分”来+1你。我不知道你的最后一句话指的是什么,但我明天早上会检查。它是这个文件:好的,那么你用编辑器一个接一个地检查了这些文件的代码?您没有使用inspector找到侦听器,并找到隐藏在方法/原型中的“addmarker”?这就是我想要理解的。也许有一个资源来了解如何挖掘这些检查员(Chrome、FF…)来找到此类信息。或者如果你不这么说,我只需要滚动所有的js文件就可以找到答案。无论如何,再次感谢你抽出时间。
(function ($) { 
  //When click on marker, act on related link
  Drupal.behaviors.gmap = {
    attach: function (context, settings) {
      //I get all the html list elements 
      var li = $('.view-content .views-field-title').parent();
      //and hide them all
      li.hide();

      //Set index to associate list element and markers
      var index = 0;
      var lastindex = -1;

      //reference for the map
      var map=Drupal.gmap.getMap('auto1map');
      //bind addmarker-handler, the marker is available as callback-argument 
      map.bind('addmarker', function (m) {
        var element = $(li)[index];
        m.marker.index=index;

        //remove listeners set automatically by the library  
        google.maps.event.clearListeners(m.marker, 'click');

        //add  your custom listener
        google.maps.event.addListener(m.marker, 'click',function(){
          //Hide last shown element
          if (lastindex != -1){
            $($(li)[lastindex]).hide();
          }
          //Show the html element corresponding to the marker
          $(element).show();
          //Set new lastindex
          lastindex = parseInt(m.marker.index);
        });

        index++;
      });
    }
  };
})(jQuery);
(function ($) {
    Drupal.behaviors.gmap = {
        attach: function (context, settings) {
          //reference for the map
          var map=Drupal.gmap.getMap('auto1map');

          //bind addmarker-handler, the marker is available as callback-argument  
          map.bind('addmarker', function (m) {
            //remove listeners set automatically by the library  
            google.maps.event.clearListeners(m.marker, 'click');
            //add  your custom listener
            google.maps.event.addListener(m.marker, 'click',function(){
              alert('This marker is placed \n@'+this.getPosition().toString());
            });
          });
        }
    }
})(jQuery);