【问题标题】:Error creating onClickListener for map marker [duplicate]为地图标记创建 onClickListener 时出错 [重复]
【发布时间】:2020-02-26 09:03:25
【问题描述】:

E/AndroidRuntime: 致命异常: main 进程:com.iot.maptesting,PID:11741 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.iot.maptesting/com.iot.maptesting.MapsActivity}:java.lang.NullPointerException:尝试调用虚拟方法 'void com.google.android.gms.maps。 MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' 在空对象引用上 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2913) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858) 原因:java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法 'void com.google.android.gms.maps.MapFragment.getMapAsync(com.google.android.gms.maps.OnMapReadyCallback)' 在 com.iot.maptesting.MapsActivity.onCreate(MapsActivity.java:39) 在 android.app.Activity.performCreate(Activity.java:7136) 在 android.app.Activity.performCreate(Activity.java:7127) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1271) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2893) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3048) 在 android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:78) 在 android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108) 在 android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808) 在 android.os.Handler.dispatchMessage(Handler.java:106) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:6669) 在 java.lang.reflect.Method.invoke(本机方法) 在 com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)

【问题讨论】:

标签: java android google-maps


【解决方案1】:

您好,Google Map 有自己的 clickListner,但我们只需添加一些代码即可启用 clickListner。你只需要在下面添加代码

首先你需要在goolge地图上添加标签就像这段代码

      Marker marker =  map.addMarker(new MarkerOptions()
            .position(new LatLng(latitude, longitude)));
      marker.setTag(position);

和getTag on mapClickListner 像这样

       map.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
            @Override
            public boolean onMarkerClick(Marker marker) {
                int position = (int)(marker.getTag());
               //Using position get Value from arraylist 
                return false;
            }
        });

希望能解决你的问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 1970-01-01
    • 2019-01-18
    • 1970-01-01
    • 2011-06-25
    • 2014-07-18
    相关资源
    最近更新 更多