javascript - 我是否可以在单击特定图标时更改 map 标记图标,然后在单击另一个图标时进行切换等等?

标签 javascript android jquery google-maps google-maps-api-3

这些是我的标记坐标。

var markers = [
    {
       "title": 'Burrel',
        "lat": '41.6065764',
        "lng": '20.0130826',
    },
    {
        "title": 'Grabian',
        "lat": '40.9501',
        "lng": '19.583533'
    },
    {
        "title": 'Spac',
        "lat": '41.899017',
        "lng": '20.0456071'
    }
];

下面是我的代码,它循环遍历它们并在 map 上创建标记以及添加点击事件监听器

 for (var i = 0; i < markers.length; i++) {
      var data = markers[i];
      var myLatlng = new google.maps.LatLng(data.lat, data.lng);
      var marker = new google.maps.Marker({
            position: myLatlng,
            map: map,
            title: data.title,
            icon: 'images/marker.png'
      });

  (function (marker, data) {
      google.maps.event.addListener(marker, "click", function (e) {
                var x = document.getElementsByClassName("displayblock")[0];
                x.style.zIndex=0;
                x.className = "w-clearfix slide";
                var d = document.getElementById(this.title);
                d.className = "w-clearfix slide displayblock";
                d.style.zIndex=1;   
        });
                })(marker, data);
    }

循环中生成的原始标记有一个图像标记“images/marker.png”,我想在单击时将其替换为“images/marker2.png”并切换它们..朝正确方向轻推将不胜感激..

最佳答案

setIcon 将用于切换标记,但复杂性在于添加事件监听器并以干净的方式清除未选定的图标。在循环中,您可以将事件监听器直接添加到标记:

marker.addListener('click', function() {
  this.setIcon(selectedSymbol);
});

您可以通过添加到类似于@tkdave建议的数组来管理所有标记:

var markers = [];
function clearSelectedMarker() {
  markers.forEach(function(marker) {
    marker.setIcon(image);
  });
}
for (var i = 0; i < beaches.length; i++) {
  var beach = beaches[i];
  var marker = new google.maps.Marker({
    position: {lat: beach[1], lng: beach[2]},
    map: map,
    icon: image,
    shape: shape,
    title: beach[0],
    zIndex: beach[3]
  });
  marker.addListener('click', function() {
    clearSelectedMarker();
    this.setIcon(selectedSymbol);
  });
  markers.push(marker);
}

对我来说,这也更具可读性。

https://jsfiddle.net/fpgya6Lq/1/

关于javascript - 我是否可以在单击特定图标时更改 map 标记图标,然后在单击另一个图标时进行切换等等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36289457/

相关文章:

javascript - html 标签和 Angular 中的属性不起作用

javascript - 通过鼠标单击或悬停显示 html 表标签名称

javascript - 如何在 javascript 中的字符串操作中使用单引号

javascript - 改变滚动时html的内容

javascript - 尝试遍历 DOM,以便在单击特定 div 时播放独特的视频

javascript - 在页面刷新之前,React 路由不起作用

javascript - 将变量从 jQuery 传递到 Angular

android - 如何使用全局搜索在其他应用程序中进行搜索

android - 如何在 Android 中为自定义 View 添加滚动

php - 在android中使用php从mysql数据库获取数据