谷歌地图点击事件无法正常工作

彼得·贝雷斯福德

我使用以下脚本来生成此页面

function initialize() {
  var mapCanvas = document.getElementById('map');
  var mapOptions = {center:new google.maps.LatLng(latitudeMid,longitudeMid),zoom:15,mapTypeId:google.maps.MapTypeId.ROADMAP,streetViewControl:false,mapTypeControl:true,scaleControl:true,scaleControlOptions:{position:google.maps.ControlPosition.TOP_RIGHT}};
  var map = new google.maps.Map(mapCanvas, mapOptions);
  var i;
  var insertion;
  var previousMarker;
  // -------------------------------
  //show locations on the map
  // -------------------------------
  for (i = 0; i < fotoCount; i++)  { 
    var myLatLng=new google.maps.LatLng(Latituden[i], Longituden[i]); 
    var marker = new StyledMarker({styleIcon:new StyledIcon(StyledIconTypes.MARKER,{color:'00ff00',text:Letters[i]}),position:myLatLng,map:map});
    marker.set('zIndex', -i);
    insertion='<img src=\"http://www.pdavis.nl/Ams/'.concat(Bestanden[i],'.jpg\"></img>'); 
    insertion=insertion.concat('<table class=width100><tr><td>Bestand: ',Bestanden[i],'</td><td class=pright>Lokatie: ',Latituden[i],' °N., ',Longituden[i],' °E. (',Letters[i],')</td>');
    insertion=insertion.concat('<td class=pright>Genomen: ',Datums[i],'</td></tr><td colspan=3>Object: ',Objecten[i],'</td></table>');
    google.maps.event.addListener(marker, 'click', function() {
      $('#photo').html(insertion);
      this.styleIcon.set('color', 'ff0000');
      if(previousMarker!=null){previousMarker.styleIcon.set('color', '00ff00')};
      previousMarker=this;
      });
  }  

单击标记应做两件事:(i)将标记变红(和任何现有的红色标记变绿)和(ii)在右侧面板中显示带有信息的适当照片。前一个确实有效,但第二个总是显示与最后一个标记相对应的照片。使用“ alert(insertion);” 表明这对于每个标记都是正确的。

Payou

您无法以这种方式进行操作,因为在循环结束时,“ i”将始终是最后一个索引。当然,当您单击标记时,回调中的“ i”值是最后一个索引,因此您应该始终显示最后一张图片。

由于i值的原因,仅将插入代码放入click回调中是不够的。您没有绑定任何东西来固定回调中的值,因此您将遇到相同的问题。

以下解决方案使用标记对象来绑定“ i”值,像这样,您可以在回调中使用它。

在您的页面上测试过的脚本:)。

根据需要调整它!

function initialize() {
  var mapCanvas = document.getElementById('map');
  var mapOptions = {center:new google.maps.LatLng(latitudeMid,longitudeMid),zoom:15,mapTypeId:google.maps.MapTypeId.ROADMAP,streetViewControl:false,mapTypeControl:true,scaleControl:true,scaleControlOptions:{position:google.maps.ControlPosition.TOP_RIGHT}};
  var map = new google.maps.Map(mapCanvas, mapOptions);
  var i;
  var previousMarker;
  // -------------------------------
  //show locations on the map
  // -------------------------------
  for (i = 0; i < fotoCount; i++)  { 
    var myLatLng=new google.maps.LatLng(Latituden[i], Longituden[i]); 
    var marker = new StyledMarker({styleIcon:new StyledIcon(StyledIconTypes.MARKER,{color:'00ff00',text:Letters[i]}),position:myLatLng,map:map});
    marker.set('zIndex', -i);
    marker.myIndex = i;

    google.maps.event.addListener(marker, 'click', function() {
      var insertion = "";
      insertion='<img src=\"http://www.pdavis.nl/Ams/'.concat(Bestanden[this.myIndex],'.jpg\"></img>'); 
      insertion=insertion.concat('<table class=width100><tr><td>Bestand: ',Bestanden[this.myIndex],'</td><td class=pright>Lokatie: ',Latituden[this.myIndex],' °N., ',Longituden[this.myIndex],' °E. (',Letters[this.myIndex],')</td>');
      insertion=insertion.concat('<td class=pright>Genomen: ',Datums[this.myIndex],'</td></tr><td colspan=3>Object: ',Objecten[this.myIndex],'</td></table>');
      $('#photo').html(insertion);
      this.styleIcon.set('color', 'ff0000');
      if(previousMarker!=null){previousMarker.styleIcon.set('color', '00ff00')};
      previousMarker=this;
      });
  }  
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

谷歌地图的Java脚本无法正常工作的第二次点击

来自分类Dev

谷歌地图fitBounds无法正常工作

来自分类Dev

谷歌地图addListener无法正常工作

来自分类Dev

谷歌地图fitBounds无法正常工作

来自分类Dev

谷歌地图方向,为什么我的代码无法正常工作

来自分类Dev

谷歌地图 - 标记点击事件未触发

来自分类Dev

点击时的Javascript事件监听器无法正常工作

来自分类Dev

谷歌地图信息窗口按钮单击jQuery无法正常工作

来自分类Dev

谷歌地图map.fitBounds()和bounds.extend()无法正常工作。

来自分类Dev

离子框架谷歌地图iPhone和Android模拟器无法正常工作

来自分类Dev

离子框架谷歌地图iPhone和Android模拟器无法正常工作

来自分类Dev

html2canvas 在拍摄包含 gmap(谷歌地图)的 div 时无法正常工作

来自分类Dev

点击的jQuery无法正常工作

来自分类Dev

Ionic3/Angular4:在谷歌地图上点击事件后,双向数据绑定停止工作

来自分类Dev

谷歌地图在点击事件中获取发件人元素

来自分类Dev

While循环无法正常工作。谷歌脚本

来自分类Dev

谷歌浏览器无法正常工作

来自分类Dev

setOnKeyPressed事件无法正常工作

来自分类Dev

在IE8中无法正常工作的元素上触发点击事件

来自分类Dev

谷歌地图缩放事件

来自分类Dev

谷歌地图缩放事件

来自分类Dev

硒元素点击无法正常工作

来自分类Dev

谷歌地图无法正常运行IE11

来自分类Dev

此处地图上的addDataPoints无法正常工作

来自分类Dev

迅捷的Google地图代表无法正常工作

来自分类Dev

Android Google地图无法正常工作

来自分类Dev

Android地图缩放无法正常工作

来自分类Dev

Android Google地图无法正常工作

来自分类Dev

此处地图上的addDataPoints无法正常工作

Related 相关文章

  1. 1

    谷歌地图的Java脚本无法正常工作的第二次点击

  2. 2

    谷歌地图fitBounds无法正常工作

  3. 3

    谷歌地图addListener无法正常工作

  4. 4

    谷歌地图fitBounds无法正常工作

  5. 5

    谷歌地图方向,为什么我的代码无法正常工作

  6. 6

    谷歌地图 - 标记点击事件未触发

  7. 7

    点击时的Javascript事件监听器无法正常工作

  8. 8

    谷歌地图信息窗口按钮单击jQuery无法正常工作

  9. 9

    谷歌地图map.fitBounds()和bounds.extend()无法正常工作。

  10. 10

    离子框架谷歌地图iPhone和Android模拟器无法正常工作

  11. 11

    离子框架谷歌地图iPhone和Android模拟器无法正常工作

  12. 12

    html2canvas 在拍摄包含 gmap(谷歌地图)的 div 时无法正常工作

  13. 13

    点击的jQuery无法正常工作

  14. 14

    Ionic3/Angular4:在谷歌地图上点击事件后,双向数据绑定停止工作

  15. 15

    谷歌地图在点击事件中获取发件人元素

  16. 16

    While循环无法正常工作。谷歌脚本

  17. 17

    谷歌浏览器无法正常工作

  18. 18

    setOnKeyPressed事件无法正常工作

  19. 19

    在IE8中无法正常工作的元素上触发点击事件

  20. 20

    谷歌地图缩放事件

  21. 21

    谷歌地图缩放事件

  22. 22

    硒元素点击无法正常工作

  23. 23

    谷歌地图无法正常运行IE11

  24. 24

    此处地图上的addDataPoints无法正常工作

  25. 25

    迅捷的Google地图代表无法正常工作

  26. 26

    Android Google地图无法正常工作

  27. 27

    Android地图缩放无法正常工作

  28. 28

    Android Google地图无法正常工作

  29. 29

    此处地图上的addDataPoints无法正常工作

热门标签

归档