2017-07-20 7 views
1

私はAndroidプログラミングの初心者です。私はすでに同様の質問と回答を見てきましたが、なぜこれがうまくいかないのか分かりません。エミュレータでこれを試して場所をクリックすると、マーカーは表示されません。これは私のコードです:Googleマップアンドロイドにマーカーを追加するにはどうすればいいですか?

編集:今すぐ次のコードをクリックするとマーカーが表示されます。 33::

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:00.076 5359から5359 /私は2番目の時間をマップクリックすると、それだけで私は実行時例外(にNullPointer例外)を与えますか? W/RcsService:java.lang.NullPointerException:com.google.android.rcs.serviceのnullオブジェクト参照 に仮想メソッド 'void com.google.android.rcs.service.service.aa()'を呼び出そうとしています。 eb(SourceFile:43) com.google.android.rcs.service.service.JibeService.onDestroy(SourceFile:162) android.app.ActivityThread.handleStopService(ActivityThread.java:3569) android.appにあります。 ActivityThread.-wrap26(不明な情報源:0) android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1703) (android.os.Handler.dispatchMessage(Handler.java:105)) はandroid.osです。 Looper.loop(Looper.java:164) android.app.ActivityThread.main(ActivityThread.java:6) 540) at java.lang.reflect.Method.invoke(ネイティブメソッド) 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[email protected]741339をリークしました。 unregisterReceiver()への呼び出しがありませんか? android.app.IntentReceiverLeaked:サービスcom.google.android.rcs.service.service.JibeServiceが、元々ここに登録されているIntentReceiver com.google[email protected]741339をリークしました。 unregisterReceiver()への呼び出しがありませんか? android.app.LoadedApk $ ReceiverDispatcherで 。android.app.ContextImpl.registerReceiverInternal(ContextImpl.java:1397)でandroid.app.LoadedApk.getReceiverDispatcher(LoadedApk.java:1091) で(LoadedApk.java:1310) android.app.ContextImpl.registerReceiver(ContextImpl.java:1370) とandroid.app.ContextImpl.registerReceiver(ContextImpl.java:1358) at android.content.ContextWrapper.registerReceiver(ContextWrapper.java:603) at com com.google.android.rcs.service.hで .google.android.rcs.service.provisioning.RcsSmsReceiver.a(SOURCEFILE:12) com.google.android.rcs.service.hgで(230 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) com.google.android.rcs.service.service.JibeService.onCreate(SourceFile:91) android.app.ActivityThread.handleCreateService(ActivityThread.java :3404) android.app.ActivityThread.-wrap4(不明なソース:0) at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1683) android.os.Handler.dispatchMessage(Handler.java :105) android.os.Looper.loop(Looper.java:164)アンドロイドでapp.ActivityThread.main(ActivityThread.java:6540) at java.lang.reflect.Method.invoke(ネイティブメソッド) at com.android.internal.os.Zygote $ MethodAndArgsCaller.run(Zygote.java:240) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)Googleマップの例では、ここで

答えて

3

ルックで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/

conseptはfolowing codのようにするE:

// 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); 
     } 
    }); 
+0

を取得します値。私が今抱えている唯一の問題は、1つのマーカーが追加されたときに、次回地図をクリックしたときにアプリが停止することです。 –

+0

あなたは受信機のリークを持っているようです。クラッシュログでこの行を見てください:JibeServiceがIntentReceiverを漏らしました。サービスのonDestroyでこのレシーバ(RcsReconfigurationSmsReceiver)の登録を解除してください。 –

0
//Show Marker on a Location 
googleMap.addMarker(new MarkerOptions().position(TIMES_SQUARE)); 

//Change Default Color of Marker 

googleMap.addMarker(new MarkerOptions() 
      .position(BROOKLYN_BRIDGE) 
      .title("First Pit Stop") 
      .icon(BitmapDescriptorFactory 
      .defaultMarker(BitmapDescriptorFactory.HUE_GREEN))); 

//Replace Default Marker Icon with Custom Image 

googleMap.addMarker(new MarkerOptions() 
      .position(WALL_STREET) 
      .title("Wrong Turn!") 
      .icon(BitmapDescriptorFactory 
      .fromResource(R.drawable.my_flag))); 
0

は、このようにしてみてください。 あなたの緯度と経度を渡し

// create marker 
MarkerOptions marker = new MarkerOptions().position(new LatLng(latitude, longitude)).title("Hello Maps"); 

// adding marker 
googleMap.addMarker(marker); 
0

は、それが機能するようになりましたユーザーに、現在位置の緯度と経度

 LatLng latLng = new LatLng(lat, lng); 
     MarkerOptions markerOptions = new MarkerOptions(); 
     markerOptions.position(latLng); 
     mMap.clear(); 
     markerOptions.title("Current Position"); 
     markerOptions.icon(BitmapDescriptorFactory.fromResource(R.drawable.marker)); 
     markerOptions.getPosition(); 
     mCurrLocationMarker = mMap.addMarker(markerOptions); 
関連する問題