【问题标题】:Google Maps API v3 - Help Linking to Google Marker from Text LinkGoogle Maps API v3 - 帮助从文本链接链接到 Google 标记
【发布时间】:2012-05-25 14:59:01
【问题描述】:

我创建了一个谷歌地图,位于:http://calwestcultural.com/sgs/example_map.html

我正在尝试将我的快速菜单中的一些文本与我的谷歌地图标记/信息窗口链接到左侧。

我的 javascript 受到限制,因为我尝试为每个标记创建 ID 并链接到该 ID,但它不起作用。在这一点上我很难过。

我还希望我的标记在您将鼠标悬停在名称上时显示名称。我使用不同的样式地图实现了这一点,但在创建标记时遇到了问题,因此我上面使用的当前标记将是我的最终标记,我只需要获取正确引用的链接。

请帮助解决我的 JS 头痛问题!!!!!!!!!!

【问题讨论】:

    标签: google-maps-api-3 maps


    【解决方案1】:

    此页面显示了将侧边栏链接连接到标记的一种方法

    http://www.wolfpil.de/v3/toggle-cats.html

    将此页面的模式复制到您的案例中,您需要一个gmarkers 全局变量

    //<![CDATA[
    var map = null;
    var gmarkers = [];
    function initialize() {
    

    添加标记的顺序很重要,它们应该与侧边栏中的业务顺序相匹配。 gmarkers 将在createMarker 中更新。

    var point = new google.maps.LatLng(37.984798,-121.312094); 
    var marker = createMarker(point,'<div style="width:205px"><center><img src="images/sampleuopsign.jpg" /></center><h2>University of the Pacific</h2>3601 Pacific Avenue<br>Stockton, California 95211<br>209.946.2011<br><small>On the web visit: <a href="http://www.pacific.edu">www.Pacific.edu<\/a></small><\/div>')
    
    ...
    
    function createMarker(latlng, html) {
        var contentString = html;
        var marker = new google.maps.Marker({
            position: latlng,
            map: map,
            zIndex: Math.round(latlng.lat()*-100000)<<5
            });
    
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(contentString); 
            infowindow.open(map,marker);
        });
        gmarkers.push(marker);
    }
    

    有了数组,我们可以通过索引来寻址它们。 Wolfpil 只是在单击侧边栏条目(链接)时触发单击事件:

    function triggerClick(i) {
      google.maps.event.trigger(gmarkers[i],"click");
    }
    

    每个链接都可以这样写,将 0 和 1 替换为每个标记的添加顺序:

    <a href="javascript:triggerClick(0)">Bank of America</a>
    <a href="javascript:triggerClick(1)">Bank of Stockton</a>
    

    关于显示标题的标记悬停,最简单的方法是在创建标记时添加title 选项,但这意味着向 createMarkers 函数添加一个新参数:

     function createMarker(latlng, storeName, html) {
      var contentString = html;
    
      var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        title: storeName,
        zIndex: Math.round(latlng.lat()*-100000)<<5
      });
    

    从长远来看,更好的选择是使用gmarkers 的对象而不是数组,因为在列表中间添加一个项目会打乱 HTML 中的现有项目。

    然后,可以通过字符串 ID 调用地点,例如 gmarkers['safeway']。我们没有将标记推送到 createMarker 中的数组,而是将 id 分配给标记:

    gmarkers[id] = marker;
    

    如果您遇到麻烦,请在下面写 cmets!上面的代码我没有测试。

    【讨论】:

    • 谢谢,我刚刚尝试过,但我的信息框没有填充:calwestcultural.com/sgs/example_map.html 我简单地添加了上述行,并在感兴趣的地方创建了一个链接(美国银行)和另一个链接P 大学。只是无法让它发挥作用。
    • 从原来的位置剪切整个triggerClick 函数并将其粘贴到function createMarker(latlng, html) { 这一行之前。 triggerClick 函数也需要是全局的,才能从链接中调用它。我没有放太多细节,但每件东西的放置位置很重要。
    • 嗯...好吧,我之前添加了该功能。根据我的 dwcs6 应用程序,我没有代码错误。我做错了什么?
    • 我什至尝试复制/粘贴 Wolfpil 链接,但不知道如何将其应用到我当前的地图。
    • 该行需要使用gmarkers[i](带有[i]),而不仅仅是gmarkers。 google.maps.event.trigger(gmarkers[i],"click");
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多