如何在谷歌地图上添加标记android? [英] How to add marker on google maps android?
问题描述
我是Android编程的初学者。我已经看过类似的问题和答案,但我仍然不知道为什么这不起作用。当我在模拟器上尝试此操作并单击某个位置时,不会出现标记。这是我的代码:
I am a beginner in Android programming. I already looked at similar questions and answers but I still can't figure out why this doesn't work. When I try this on the emulator and click a location, no marker appears. This is my code:
编辑:当我点击下面的代码时,我得到一个标记。它只给我一个运行时异常(NullPointer异常),当我第二次点击地图时:
I get a marker when I click now with the following code. It only gives me a runtime exception (NullPointer exception) when I click the map the second time:
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:试图通过com.google.android.rcs在空对象引用
上调用虚方法'void com.google.android.rcs.service.service.aa()' .service.eb(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)
在android.app.ActivityThread.main(ActivityThread.java:6540)
在java.lang.reflect.Method.invoke(本地方法)
在com.android.internal.os.Zygote $ MethodAndArgsCaller。运行(Zygote.java:240)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)
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:服务com.google.android.rcs.service.service.JibeService泄露了最初在此处注册的IntentReceiver com.google.android.rcs.service.provisioning.RcsReconfigurationSmsReceiver@741339。你是否错过了对unregisterReceiver()的调用?
android.app.IntentReceiverLeaked:服务com.google.android.rcs.service.service.JibeService泄漏了最初在此注册的IntentReceiver com.google.android.rcs.service.provisioning.RcsReconfigurationSmsReceiver@741339。你是否错过了对unregisterReceiver()的调用?
at android.app.LoadedApk $ ReceiverDispatcher。(LoadedApk.java:1310)
at android.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1091)
at android.app.ContextImpl。
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1370)
at android.app.ContextImpl.registerReceiver(ContextImpl.java:1358)
在android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603)
在com.google.android.rcs.service.provisioning.RcsSmsReceiver.a(SourceFile:12)
在com.google.android .rcs.service.hg( SourceFile:230)
在com.google.android.rcs.service.h。(SourceFile:212)
在com.google.android.rcs.service.service.a。(SourceFile:13)
在com.google.android.rcs.service.ea(SourceFile:32)
在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)
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.(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.(SourceFile:212) at com.google.android.rcs.service.service.a.(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地图示例
https://developers.google.com/maps/ documentation / android-api / marker
Look here in Google Maps example https://developers.google.com/maps/documentation/android-api/marker
如果你想添加标记whe ñ点击你也可以看看这里:
http://wptrafficanalyzer.in/blog/adding-marker-on-touched-location-of-google-maps-using-android-api-v2-with-supportmapfragment/
If you want to add marker when clicking you can also look here: http://wptrafficanalyzer.in/blog/adding-marker-on-touched-location-of-google-maps-using-android-api-v2-with-supportmapfragment/
这个概念就像下面的代码一样:
The consept is to do like the folowing code:
// 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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!