gpt4 book ai didi

android - 如何永久更改应用程序标记的行为?

转载 作者:行者123 更新时间:2023-11-30 02:04:36 24 4
gpt4 key购买 nike

我想做到这一点,以便当用户在谷歌地图中创建标记时,可以双击(或按住或其他东西)并调出一个新的 Activity。现在我有了它,所以我可以在 map 上手动创建一个标记,并使用 onMarkerClickListener 等待标记被点击以启动新 Activity 。基本上,我想让所有在我的应用程序中创建的标记都共享此行为,并且我需要某种检查来区分我自己的用户标记和 Google/外部标记。

下面是代码:

public void setUsermarker() {

mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

@Override
public boolean onMarkerClick(Marker marker) {
if (marker.equals(userMarker)) { //if clicked marker equals marker created by user
Intent intent = new Intent(MapsActivity.this, ObjectViewActivity.class);
startActivity(intent);

} //Otherwise just show the info window
return false;
}
});
}

最佳答案

您可以在 Set<String> 中添加您明确添加到 map 中的每个标记的 ID。以便将它们与 map 上的其他标记区分开来。

文档:https://developers.google.com/android/reference/com/google/android/gms/maps/model/Marker#getId()

    //instance variables:
LatLng latLng;
String title;
String snippet;
Set<String> markerIDs = new HashSet<String>();

在你的应用中添加一个Marker时,捕获返回的Marker,获取ID,并将ID添加到Set中:

    //Adding your markers
Marker marker = mMap.addMarker(new MarkerOptions().position(latLng)
.title(title)
.snippet(snippet));

//Add each ID to the Set
String id = marker.getId();
markerIDs.add(id);

然后,在启动其他 Activity 之前,只需检查 Marker ID 是否在 Set 中:

public void setUsermarker() {

mMap.setOnMarkerClickListener(new OnMarkerClickListener() {

@Override
public boolean onMarkerClick(Marker marker) {
if (markerIDs.contains(marker.getId())) { //if clicked marker equals marker created by user
Intent intent = new Intent(MapsActivity.this, ObjectViewActivity.class);
startActivity(intent);

} //Otherwise just show the info window
return false;
}
});
}

关于android - 如何永久更改应用程序标记的行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30896258/

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