【问题标题】:google maps - open marker infowindow given the coordinates谷歌地图 - 给定坐标打开标记信息窗口
【发布时间】:2011-02-21 15:55:23
【问题描述】:

我正在使用谷歌地图 api v3。

使用 javascript,我如何在给定坐标的情况下打开标记的信息窗口?

【问题讨论】:

  • 你能分享一些代码吗?你有保存标记吗?
  • 是的,标记已保存并显示在地图上。我有一个地图外的链接列表,当我当前单击时,我将地图以它们的坐标为中心,但我也希望它在它们的坐标处加载标记的信息窗口
  • 请在 jsbin 或 jsfiddle 上分享代码,以便我们尽快修复它。 ;)

标签: javascript google-maps


【解决方案1】:

这里是Jsfiddle,它向您展示了如何使用标记进行地图 JavaScript 交互的“外部”。是的,您确实需要保存标记,并且它是数组中适当的 InfoWindow,以便您可以访问它。我创建了两个随机标记并使用数组中的坐标。

这里是 HTML 和两个通用链接,其中单击链接一个会以制造商 1 为中心并弹出其信息窗口,对于标记 2,反之亦然:

    <div id='map_canvas'></div>
    <a href='#' onClick="gotoPoint(1);">Click for marker 1</a><br/>
    <a href='#' onClick="gotoPoint(2);">Click for marker 2</a>

在 createMarker 中,我将创建的 maker 与其关联的 InfoWindow 一起存储,并将其推送到全局范围的标记数组中。悬停标记时,它将打开其关联信息窗口:

function createMarker(lat, lon, html) {
    var newmarker = new google.maps.Marker({
        position: new google.maps.LatLng(lat, lon),
        map: map,
        title: html
    });

    newmarker['infowindow'] = new google.maps.InfoWindow({
            content: html
        });

    google.maps.event.addListener(newmarker, 'mouseover', function() {
        this['infowindow'].open(map, this);
    });

    marker.push(newmarker);
}

在 gotoPoint 中,我只是简单地将标记编号作为参数输入。我基本上通过使用new google.maps.LatLng 将地图的中心设置为标记的中心,并通过调用marker[myPoint-1].position.lat();marker[myPoint-1].position.lng(); 使用标记的纬度和经度,并使用marker[myPoint-1]['infowindow'].open(map, marker[myPoint-1]); 打开其关联的InfoWindow:

function gotoPoint(myPoint){
    map.setCenter(new google.maps.LatLng(marker[myPoint-1].position.lat(), marker[myPoint-1].position.lng()));
    marker[myPoint-1]['infowindow'].open(map, marker[myPoint-1]);
}

如果您对此示例有任何疑问,请告诉我。

【讨论】:

  • 例如nerddinner.com 我知道它不是谷歌地图,但是当你悬停链接时它会加载一个窗口。
  • @raklos 是的,你可以这样做,给我几分钟时间来写一些代码
  • 似乎是一个很好的答案,如果您只想一次打开一个信息窗口,您将如何使用此代码?
猜你喜欢
  • 2011-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-06-03
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
相关资源
最近更新 更多