【发布时间】:2014-10-25 16:06:32
【问题描述】:
我在 Drupal 中使用谷歌地图(但我认为这与我的问题无关)。 在一个视图(Drupal 中的页面显示)上,我在谷歌地图上显示标记。 我在外部块中显示地图上标记的链接。
我看过this example,但我认为相反: 我想,当我点击地图标记时,我想显示(或强调)相关链接(和额外数据)。
(function ($) {
Drupal.behaviors.gmap = {
attach: function (context, settings) {
//'auto1map' is the name of my map
$.each(Drupal.settings.gmap.auto1map.markers, function(index, mymarker){
console.log(mymarker);
//using 'mymarker' doesn't trigger the mouseover
//I need the 'mymarker.marker' marker-object instead
var marker = ???;
//I want to do something like this
google.maps.event.addListener(marker, 'click', function(e){
console.log(index+' finally clicked');
});
// ...the rest of my code
});
}
}
})(jQuery);
一个 mymarker 对象在 Chrome 控制台中是这样的:
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"
PS:|> 代表三角形可扩展图标
我需要定位那个标记对象,而不是 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”,这似乎是标记对象的类型(“标记”类型?)。 我尝试了api guide 我无法在任何地方找到有关如何访问这些数据的帮助,
编辑 - 我编辑了我的 js 代码以显示我需要的内容。
编辑 - 感谢@Dr.Molle 和 AlexK,我成功实现了我的目标。
这是更新版本:我有一个 Drupal 视图,显示带有标记的谷歌地图,我还有一个“附件”,在不同的块中显示 html 列表中的相同标记。 当我点击一个标记时,我想显示相应的列表元素(并隐藏其他元素)。
(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);
【问题讨论】:
标签: javascript google-maps-api-3 drupal-7