gpt4 book ai didi

android - 带有 LatLng 的 Google Maps hashmap

转载 作者:行者123 更新时间:2023-11-29 21:48:42 25 4
gpt4 key购买 nike

我创建了一个名为 MapMarker 的简单类,如下所示:

public class MapMarker {
private long id;
private String resName;


public MapMarker(){}

public MapMarker(long id, String resName){
this.id = id;
this.resName = resName;
}

public long getId(){
return id;
}

public String getResName(){
return resName;
}
}

当我在谷歌地图中添加标记时,我还创建了一个 HashMap,以便在单击信息窗口时按顺序创建,我可以使用一些参数启动 Activity 。我使用的代码如下,用于添加标记和初始化 HashMap

private HashMap<LatLng, MapMarker> mapMarkersData = new HashMap<LatLng, MapMarker>();

markerCoords = new LatLng(lat, lng);

mapMarkersData.put(markerCoords, new MapMarker(markerId, markerRes));

map.addMarker(new MarkerOptions().position(markerCoords).title(title).snippet("Click to see more info!"));

当我尝试从 HashMap 中获取值时,我得到了一个空指针异常。我正在使用的代码如下。

line 360:    markerId = mapMarkersData.get(marker.getPosition()).getId();
markerResName = mapMarkersData.get(marker.getPosition()).getResName();

出了什么问题?

编辑:
logcat 如下:

02-23 20:37:55.780: E/AndroidRuntime(4853): FATAL EXCEPTION: main
02-23 20:37:55.780: E/AndroidRuntime(4853): java.lang.NullPointerException
02-23 20:37:55.780: E/AndroidRuntime(4853): at .MapActivity.onInfoWindowClick (MapActivity.java:360)
02-23 20:37:55.780: E/AndroidRuntime(4853): at .GoogleMap$8.h(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at com.google.android.gms.internal.u$a.onTransact(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at android.os.Binder.transact(Binder.java:279)
02-23 20:37:55.780: E/AndroidRuntime(4853): at com.google.android.gms.maps.internal.IOnInfoWindowClickListener$Stub$Proxy.onInfoWindowClick(IOnInfoWindowClickListener.java:82)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.y.bw.a(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.a.y.f(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.a.y.a(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.a.bd.c(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.a.dq.onSingleTapConfirmed(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.e.v.onSingleTapConfirmed(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at maps.e.j.handleMessage(Unknown Source)
02-23 20:37:55.780: E/AndroidRuntime(4853): at android.os.Handler.dispatchMessage(Handler.java:99)
02-23 20:37:55.780: E/AndroidRuntime(4853): at android.os.Looper.loop(Looper.java:130)
02-23 20:37:55.780: E/AndroidRuntime(4853): at android.app.ActivityThread.main(ActivityThread.java:3691)
02-23 20:37:55.780: E/AndroidRuntime(4853): at java.lang.reflect.Method.invokeNative(Native Method)
02-23 20:37:55.780: E/AndroidRuntime(4853): at java.lang.reflect.Method.invoke(Method.java:507)
02-23 20:37:55.780: E/AndroidRuntime(4853): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:912)
02-23 20:37:55.780: E/AndroidRuntime(4853): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:670)
02-23 20:37:55.780: E/AndroidRuntime(4853): at dalvik.system.NativeStart.main(Native Method)

抱歉,已进行最后一次编辑。

最佳答案

确保 key 存在于您的 HashMap 中。

我刚刚在我的代码中遇到了类似的问题,我发现我用于存储和查找的 lat/lng 值的小数位数不同,这导致查找失败。

LatLng 实现了 equals(Object o) 方法,因此您不必担心引用相等问题。

关于android - 带有 LatLng 的 Google Maps hashmap,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043962/

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