【问题标题】:Change marker icon on click leaflet点击传单上的更改标记图标
【发布时间】:2024-01-03 06:30:02
【问题描述】:

Original-markerIcon = 传单/图像/marker-icon-2x.png current-markerIcon = 传单/图像/map-marker.png

我有很多标记,我想更改当前单击标记的标记图标。如果我再次单击另一个标记,则将所有标记图标更改为原始标记和当前标记与当前图标。

我还附有每个标记的标签。 当我单击当前图标时,我还想更改该标记的标签或删除标签。

我怎样才能做到这一点?

谢谢。 带有原始标记图标可见标记的图像

EDIT-1

L.Icon.Change = L.Icon.Default.extend({
                        options: {
                            iconUrl: 'leaflet/images/map-marker.png',
                            iconSize: new L.Point(150, 75),
                        }
                    });
                    var changeIcon = new L.Icon.Change();

                    L.Icon.Original = L.Icon.Default.extend({
                        options: {
                            iconUrl: 'leaflet/images/marker-icon-2x.png',
                            iconSize: new L.Point(45, 81),
                        }
                    });
                    var originalIcon = new L.Icon.Original();

                    marker.on('click',function(e){
                        for(var i = 0 ; i < $scope.markers.length ; i++){
                            $scope.markers[i].setIcon(originalIcon);
                        }


                    })


                    // marker click event to show the center pano
                    $scope.markers[index].on('click',function(e){
                        $scope.markers[index].setIcon(changeIcon);
                     });

【问题讨论】:

    标签: leaflet marker


    【解决方案1】:

    如果我没记错的话,map 中有一个名为“eachLayer”的函数。我认为当您创建标记时,传单会为此提供一个自动 ID。因此,您必须在“eachLayer”函数中提供该 ID。当它找到合适的标记时,应该有一个函数“popupclose”。如果您显示您的代码,添加它会更好......!

    【讨论】:

      最近更新 更多