【问题标题】:a href in a infowindow maps api v3信息窗口中的 href 映射 api v3
【发布时间】:2013-03-08 19:32:25
【问题描述】:

可以从信息窗口中的链接调用JavaScript吗?知道这是可能的,但就我而言,我不知道如何声明 i

i是一个多边形数,表示调用函数kmlShowPlacemark(i)

这是我的例子:

function clickablePolygon(placemark, info, i) {
     var name = geoXmlDoc.placemarks[i].name;
     var numMkrs = geoXmlDoc.placemarks[i].numMarkers;
     google.maps.event.addListener(placemark.polygon, "click", function(e) {
        if (e && e.latLng) {
             infowindow.setPosition(e.latLng);
        } else {
             infowindow.setPosition(placemark.polygon.bounds.getCenter());
        }
    infowindow.setContent('<div class="geoxml3_infowindow"><h3>' + placemark.name +
           '</h3><div>' + info + '<br><a href="javascript:kmlShowPlacemark('+ i + ');">Show place</a></div>');
        infowindow.open(map); 
     });
}

【问题讨论】:

  • 有可能。我们需要更多背景信息。
  • 我查看了您的other question,我在其中为您编写了此代码。你怎么称呼它?

标签: javascript google-maps-api-3 polygon declaration infowindow


【解决方案1】:

请尝试以下方法:

替换:

<a href="javascript:kmlShowPlacemark('+ i + ');">Show place</a>

<a href="#" onclick="kmlShowPlacemark('+ i + '); return false;">Show place</a>

【讨论】:

  • 打开信息窗口仍然有问题,认为是用 var name = geoXmlDoc.placemarks[i].name 声明 i 时出现的问题; ?
  • 我注意到你缺少一个结束
    但我不确定这是否能解决问题。你是说信息窗口根本没有打开?
  • 是的,它根本没有打开,当对//var name = geoXmlDoc.placemarks[i].name; //var numMkrs = geoXmlDoc.placemarks[i].numMarkers; 发表评论时,它打开但没有显示位置链接的功能
  • JavaScript 控制台是否显示任何错误?你能调试和单步调试代码吗?如果能,“i”和“name”的值是多少?
  • 错误 Uncaught TypeError: Cannot 读取属性 'name' of 未定义
  • 【解决方案2】:

    这对我有用,看起来您在 InfoWindow 中的 HTML 无效(这是我看到的唯一真正的区别):

    function clickablePolygon(placemark, info, i) {
      google.maps.event.addListener(placemark.polygon, "click", function(e) {
        if (e && e.latLng) {
          infowindow.setPosition(e.latLng);
        } else {
          infowindow.setPosition(placemark.polygon.bounds.getCenter());
        }
        infowindow.setContent('<div class="geoxml3_infowindow"><h3>' + placemark.name +
                   '</h3><div>' + info + '</div>'+'<br><a href="javascript:kmlShowPlacemark('+ i + ');">Show place</a></div>');
        infowindow.open(map);
      });
    }
    

    modified proof of concept

    【讨论】:

    • 它工作得很好只是认为在调用javascript时不会自动关闭信息窗口example
    • 所以写代码来关闭它。我认为 kmlShowPlacemark 中的 infowindow.close() 应该可以工作。
    猜你喜欢
    • 2012-10-31
    • 2012-03-19
    • 2011-12-22
    • 1970-01-01
    • 2012-05-27
    • 1970-01-01
    • 2013-12-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多