首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >谷歌地图Api v3触发问题,外部链接点击信息窗口

谷歌地图Api v3触发问题,外部链接点击信息窗口
EN

Stack Overflow用户
提问于 2010-07-08 05:01:39
回答 2查看 13.6K关注 0票数 8

所以我的代码看起来像这样,多个标记:

代码语言:javascript
复制
var m1 = new google.maps.Marker(
   new google.maps.LatLng(35.2602340, -93.7939480), 
   {icon:tinyIcon,bouncy:1}
);

google.maps.Event.addListener(m1, "click", function() {
   m1.openInfoWindowHtml(   
      '1<br />test,TX'
   );
});

map.addOverlay(m1);

var m2 = new google.maps.Marker(
   new google.maps.LatLng(35.2810510, -93.8246510), 
   {icon:tinyIcon,bouncy:1}
);

google.maps.Event.addListener(m2, "click", function() {
    m2.openInfoWindowHtml(
        'test<br />test,Texas'
    );
});

map.addOverlay(m2);

我怎样才能让它在外部工作?

代码语言:javascript
复制
href="google.maps.Event.trigger(1, 'click');">Something</>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-08 21:42:42

要在其中一个标记上触发单击事件,您可以简单地执行以下操作:

代码语言:javascript
复制
<a href="javascript:google.maps.event.trigger(m1, 'click');">Trigger Click on m1</a>

但是,看起来您的代码中还有一些问题,因为您混合了来自v2 APIv3 API的方法。例如,v3应用编程接口中不存在addOverlay()openInfoWindowHtml()方法。

因此,要使用v3应用程序接口,您的代码应该如下所示:

代码语言:javascript
复制
var map = new google.maps.Map(document.getElementById("map"), {
   zoom: 11,
   center: new google.maps.LatLng(35.26, -93.80),
   mapTypeId: google.maps.MapTypeId.ROADMAP
});

// You only need one InfoWindow object
var infowindow = new google.maps.InfoWindow();

// Create the markers, and keep a reference to them
var m1 = new google.maps.Marker({
  position: new google.maps.LatLng(35.2602340, -93.7939480),
  map: map
});

var m2 = new google.maps.Marker({
  position: new google.maps.LatLng(35.2810510, -93.8246510),
  map: map
});

// Add the events listeners on the markers
google.maps.event.addListener(m1, 'click', function() {
  infowindow.setContent('1<br />test,TX');
  infowindow.open(map, m1);
});

google.maps.event.addListener(m2, 'click', function() {
  infowindow.setContent('test<br />test,Texas');
  infowindow.open(map, m2);
});
票数 3
EN

Stack Overflow用户

发布于 2011-07-06 02:16:52

如果您要处理大量的标记:

代码语言:javascript
复制
var map;
var markers = []; // declared EXTERNALLY (and m1 and m2 in the examples above)

function setupMarkers() {

    var markersLayer =  new Array();
    markersLayer = [
        [52.26326, 21.673675], // marker #0
        [52.67328, 21.865789], // marker #1
        [52.34366, 21.348797]  // marker #2 etc.
    ];

    for (var i = 0; i < markersLayer.length; i++) {
    // or: for (var i in markersLayer) {
        var myLatLng = new google.maps.LatLng(markersLayer[i][0], markersLayer[i][1]);
        var marker = new google.maps.Marker({..., position: myLatLng, ...});
        google.maps.event.addListener(marker, 'click', function() {...}); 
        markers.push(marker);
    }

}

function initialize() {
    ...
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    ...
    setupMarkers();
}

function launchInfoWindow(x) {
    // window.scroll(0, 0);
    // markers[x].setMap(map);
    google.maps.event.trigger(markers[x], "click");
}

HTML:
<a href="javascript:launchInfoWindow(2);">...</a>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3198784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档