gpt4 book ai didi

android - 如何在 google maps android 上添加标记?

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

我是 Android 编程的初学者。我已经看过类似的问题和答案,但我仍然不明白为什么这不起作用。当我在模拟器上尝试此操作并单击某个位置时,没有出现任何标记。这是我的代码:

编辑:当我现在点击以下代码时,我得到一个标记。当我第二次单击 map 时,它只会给我一个运行时异常(NullPointer 异常):

public class MapViewFragment extends Fragment {

MapView mMapView;
private GoogleMap googleMap;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_map_view, container, false);
mMapView = (MapView) rootView.findViewById(R.id.mapView);
mMapView.onCreate(savedInstanceState);
mMapView.onResume();

Context context = getActivity().getApplicationContext();

final LocationsDB locationsDB = new LocationsDB(context);

try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}

mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
googleMap.setOnMapClickListener(new GoogleMap.OnMapClickListener() {
public void onMapClick(LatLng point) {
// Drawing marker on the map
MarkerOptions markerOptions = new MarkerOptions();
markerOptions.position(point);
markerOptions.title(point.latitude + " : " + point.longitude);
googleMap.clear();
googleMap.animateCamera(CameraUpdateFactory.newLatLng(point));
googleMap.addMarker(markerOptions);
// Create location object
Location location = new Location(point.latitude, point.longitude);
// add location to SQLite database
locationsDB.insert(location);
}
});
}
});
return rootView;
}
}

记录消息:

7-20 07:33:00.076 5359-5359/? W/RcsService: java.lang.NullPointerException: Attempt to invoke virtual method 'void com.google.android.rcs.service.service.a.a()' on a null object reference
at com.google.android.rcs.service.e.b(SourceFile:43)
at com.google.android.rcs.service.service.JibeService.onDestroy(SourceFile:162)
at android.app.ActivityThread.handleStopService(ActivityThread.java:3569)
at android.app.ActivityThread.-wrap26(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1703)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6540)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)


07-20 07:33:00.079 5359-5359/? E/ActivityThread: Service com.google.android.rcs.service.service.JibeService has leaked IntentReceiver com.google.android.rcs.service.provisioning.RcsReconfigurationSmsReceiver@741339 that was originally registered here. Are you missing a call to unregisterReceiver()?
android.app.IntentReceiverLeaked: Service com.google.android.rcs.service.service.JibeService has leaked IntentReceiver com.google.android.rcs.service.provisioning.RcsReconfigurationSmsReceiver@741339 that was originally registered here. Are you missing a call to unregisterReceiver()?
at android.app.LoadedApk$ReceiverDispatcher.<init>(LoadedApk.java:1310)
at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1091)
at android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1397)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1370)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1358)
at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603)
at com.google.android.rcs.service.provisioning.RcsSmsReceiver.a(SourceFile:12)
at com.google.android.rcs.service.h.g(SourceFile:230)
at com.google.android.rcs.service.h.<init>(SourceFile:212)
at com.google.android.rcs.service.service.a.<init>(SourceFile:13)
at com.google.android.rcs.service.e.a(SourceFile:32)
at com.google.android.rcs.service.service.JibeService.d(SourceFile:145)
at com.google.android.rcs.service.service.JibeService.onCreate(SourceFile:91)
at android.app.ActivityThread.handleCreateService(ActivityThread.java:3404)
at android.app.ActivityThread.-wrap4(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1683)
at android.os.Handler.dispatchMessage(Handler.java:105)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6540)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

最佳答案

在 Google map 示例中查看此处 https://developers.google.com/maps/documentation/android-api/marker

如果你想在点击时添加标记你也可以看这里: http://wptrafficanalyzer.in/blog/adding-marker-on-touched-location-of-google-maps-using-android-api-v2-with-supportmapfragment/

概念是像下面的代码那样做:

// Setting a click event handler for the map
googleMap.setOnMapClickListener(new OnMapClickListener() {

@Override
public void onMapClick(LatLng latLng) {

// Creating a marker
MarkerOptions markerOptions = new MarkerOptions();

// Setting the position for the marker
markerOptions.position(latLng);

// Setting the title for the marker.
// This will be displayed on taping the marker
markerOptions.title(latLng.latitude + " : " + latLng.longitude);

// Clears the previously touched position
googleMap.clear();

// Animating to the touched position
googleMap.animateCamera(CameraUpdateFactory.newLatLng(latLng));

// Placing a marker on the touched position
googleMap.addMarker(markerOptions);
}
});

关于android - 如何在 google maps android 上添加标记?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45207709/

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