gpt4 book ai didi

Android 谷歌地图 V2 : How to change previous clicked marker's icon when clicked on another marker

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:14:40 25 4
gpt4 key购买 nike

更新:我已经通过添加一个 previousMarker 对象解决了性能问题。因此只有之前点击的标记会被删除并替换为默认图标。然而,当我点击标记时,信息窗口仍然没有显示。


我有一个 map View 并在上面设置了一些标记。我想要的是当我点击一个标记时,它会将其图标更改为不同的图标,而当我点击另一个标记时,前一个标记的图标应更改为其原始图标。

我所做的是类似这样的事情,但它只是在我单击标记时更改标记图标。

@Override
public boolean onMarkerClick(Marker marker) { //Called when a marker has been clicked or tapped.

LatLng markerPos=marker.getPosition();
String markerLocationName=marker.getTitle();
String markerSubCategoryName=marker.getSnippet();

marker.remove();

MarkerOptions markerOptions =
new MarkerOptions().position(markerPos)
.title(markerLocationName)
.snippet(markerSubCategoryName)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.new_icon));// Changing marker icon
mMap.addMarker(markerOptions);
Log.d("marker","change marker icon"); // can open a dialog window here
return false;
}

所以如果我点击 2 个标记,我会出现 2 个新图标,同时我想要的只是当前点击的标记改变它的图标。

所以我还通过添加 2 行代码来完成类似的操作。它成功地做了我想做的事,但它有一些缺点(见下文)。

@Override
public boolean onMarkerClick(Marker marker) { //Called when a marker has been clicked or tapped.

mMap.clear();
populateAllMarkersOnMap();//repopulate markers on map

LatLng markerPos=marker.getPosition();
String markerLocationName=marker.getTitle();
String markerSubCategoryName=marker.getSnippet();

marker.remove(); //remove the current clicked marker

MarkerOptions markerOptions =
new MarkerOptions().position(markerPos)
.title(markerLocationName)
.snippet(markerSubCategoryName)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.new_icon));// Changing marker icon
mMap.addMarker(markerOptions); //add marker with new icon into map
return false;
}

缺点是 1/它“禁用”了信息窗口(同样的事情也发生在第一种方式中)。 2/它清除 map 上的所有标记并重新设置所有标记。想象一下,我有 100 个标记,每次点击都会出现性能问题吗?

populateAllMarkersOnMap() 目前可以像这样简单:

private void populateAllMarkersOnMap(){
setMarker(latA1, lonA1, "A1","A1.1");
setMarker(latA2, lonA2, "A2","A2.1");
// ... (100 times or populated via a loop)
};

那么,当我点击一个新的标记时,有没有办法让之前点击的标记将其图标恢复为默认图标?为我的英语道歉,如果你认为我应该为我的问题加上另一个标题,请帮忙。

最佳答案

最后我找到了最好最简单的方法。我制作了一个 previousMarker 对象并存储了当前点击的标记:

@Override
public boolean onMarkerClick(Marker marker) { //Called when a marker has been clicked or tapped.
if(previousMarker!=null){
previousMarker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.dot_icon));
}
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.ct_icon));
previousMarker=marker; //Now the clicked marker becomes previousMarker
return false;
}

关于Android 谷歌地图 V2 : How to change previous clicked marker's icon when clicked on another marker,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26193902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com