2016-05-23 16 views
0

Googleマップでジオコーダーを使用しようとしています。私はLocation nameから緯度と経度を得ることができます。私の問題は、緯度と経度を使ってマーカーを追加したり、カメラをその位置に移動することができないことです。ヌルポインタ例外を表示するたびにしかし、私はテキストビューとして緯度と経度を取得します。私はすべての許可を使用しましたが、実際にGeocoderは正常に動作しますが、Googleマップでは動作しません。 ジオコーダーはマーカーを追加したり、Googleマップ上のその場所に移動したりしていませんか?Geocoderは実際にGoogleマップapi v2で動作しますか?

ナビゲーションドロワーのためにフラグメントクラスを使用していますが、この問題を引き起こすものはありますか?

いずれかのボディに回答がある場合は、それが役に立ちます。 誰かが尋ねると私は自分の作品を投稿できます。 が、これは私のフラグメントクラス

public class GMapFragment extends Fragment implements OnMapReadyCallback{ 
    private GoogleMap googleMap; 
    MapFragment fragment; 
    EditText location_tf; 
    Button button; 
    List<Address> addressList; 
    Geocoder geocoder; 
    double lat; 
    double lng; 


     @Override 
     public View onCreateView(LayoutInflater inflater, ViewGroup container, 
       Bundle savedInstanceState) { 

      View rootView = inflater.inflate(R.layout.fragment_gmap, container, false); 
      location_tf = (EditText)rootView.findViewById (R.id.TFaddress); 

      button = (Button)rootView.findViewById(R.id.Bsearch); 
      button.setOnClickListener(buttonOnClickListener); 

      initilizeMap(); 
      return rootView;} 



       OnClickListener buttonOnClickListener = 
          new OnClickListener(){ 

     public void onClick(View v) 

     { 



      String location = location_tf.getText().toString(); 
      Geocoder geocoder = new Geocoder(getActivity(),Locale.ENGLISH); 
      List<Address> addressList = null; 
      try { 
       addressList = geocoder.getFromLocationName(location, 1); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
      Address address = addressList.get(0); 
      String locality= address.getLocality(); 
      Toast.makeText(getActivity(), locality, Toast.LENGTH_SHORT).show(); 

      lat = address.getLatitude(); 
      lng = address.getLongitude(); 

      LatLng ll = new LatLng(lat, lng); 
      googleMap.addMarker(new MarkerOptions()  //line 89 
      .position((ll))); 
      googleMap.moveCamera(CameraUpdateFactory.newLatLngZoom(
        (ll), 15)); 


     } 
       } 
     ; 
     private void initilizeMap() 
     { 
      MapFragment fragment = (MapFragment) getFragmentManager().findFragmentById(R.id.map); 
       if (fragment != null){ 
        fragment.getMapAsync(this); 

       } 

     } 
     @Override 
     public void onMapReady(final GoogleMap googleMap) { 
      googleMap.setMyLocationEnabled(true); 
      googleMap.addMarker(new MarkerOptions().position(new LatLng(0, 0)).title("Marker")); 
     } 

     @Override 
     public void onPause() { 

      final FragmentManager fragManager = this.getFragmentManager(); 
      final Fragment fragment = fragManager.findFragmentById(R.id.map); 
      if(fragment!=null){ 
       fragManager.beginTransaction().remove(fragment).commit(); 
      super.onPause(); 

      } 
     } 
     @Override 
     public void onDestroy() { 
      super.onDestroy(); 
      final FragmentManager fragManager = this.getFragmentManager(); 
      final Fragment fragment = fragManager.findFragmentById(R.id.map); 
      if(fragment!=null){ 
       fragManager.beginTransaction().remove(fragment).commit(); 
      } 
     } 
     } 

あります

ありがとうございました、これは私のLogCatあなたは変数を割り当てることはありませんので、

05-23 20:05:36.133: E/AndroidRuntime(10092): FATAL EXCEPTION: main 
05-23 20:05:36.133: E/AndroidRuntime(10092): Process: com.cubecode.mapdhaka, PID: 10092 
05-23 20:05:36.133: E/AndroidRuntime(10092): java.lang.NullPointerException 
05-23 20:05:36.133: E/AndroidRuntime(10092): at com.cubecode.mapdhaka.GMapFragment$1.onClick(GMapFragment.java:89) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at android.view.View.performClick(View.java:4472) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at android.view.View$PerformClick.run(View.java:18779) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at android.os.Handler.handleCallback(Handler.java:808) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at android.os.Handler.dispatchMessage(Handler.java:103) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at android.os.Looper.loop(Looper.java:193) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at android.app.ActivityThread.main(ActivityThread.java:5292) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at java.lang.reflect.Method.invokeNative(Native Method) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at java.lang.reflect.Method.invoke(Method.java:515) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:824) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:640) 
05-23 20:05:36.133: E/AndroidRuntime(10092): at dalvik.system.NativeStart.main(Native Method) 
+0

私はフラグメントのクラスとlogcatを掲載している関連するコード – pablobu

+0

を投稿してください。マーカーと移動カメラからの問題のみです。私がそれらを使用せずにテキストビューを使用すると、私は緯度と経度を得ることができます。しかし、私は検索された場所にマーカーを追加し、その場所にカメラを移動したい。可能です@pablobu – Rakib07003

答えて

0

Googleマップ変数がnullです。

onMapReadyを追加します。

this.googleMap = googleMap; 
+0

ありがとうたくさんの男。私は検索して多くの質問をしましたが、解決策はありませんでした。今すぐ動作しています – Rakib07003

+0

onPauseとonDestroyメソッドが見えたら助かります。私のonPauseメソッドは、私がこの断片にいる間、私のアプリの外に出ようとすると機能しません。私の断片に戻ると私は地図を見ることができません。私が他の断片に移動すると、アプリケーションがクラッシュします。私が変更する必要があるものはありますか? @pablobu – Rakib07003

+0

あなたのコードで何を達成しようとしていますか?あなたはMapViewを使用することを検討しましたか? – pablobu

関連する問題