2016-05-23 10 views
0

Ich versuche, Geocoder mit meiner Google Map zu verwenden. Ich kann den Breiten- und Längengrad vom Standortnamen erhalten. Mein Problem ist, dass ich den Breiten- und Längengrad nicht verwenden kann, um einen Marker hinzuzufügen oder die Kamera an diese Position zu bewegen. Jedes Mal, wenn eine Nullzeiger-Ausnahme angezeigt wird. Aber ich bekomme den Breiten- und Längengrad als Textansicht. Ich habe alle die Erlaubnis verwendet, tatsächlich funktioniert Geocoder gut, aber nicht mit der Google-Karte. Funktioniert Geocoder nicht, um einen Marker hinzuzufügen oder zu diesem Ort auf Google Map zu bewegen?Funktioniert Geocoder tatsächlich mit google map api v2?

Ich verwende Fragment-Klasse wegen der Navigationsschublade, hat es irgendetwas, um dieses Problem zu schaffen?

Wenn ein Körper eine Antwort hat, wäre das hilfreich. Ich kann meine Arbeit veröffentlichen, wenn jemand fragt. Danke

dies mein Fragment Klasse ist

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(); 
      } 
     } 
     } 

dies mein LogCat ist

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

bitte den zugehörigen Code schreiben – pablobu

+0

ich das Fragment Klasse und logcat gebucht haben. nur Problem, das von der Markierung kommt und Kamera bewegt. Wenn ich sie nicht benutze und die Textansicht verwende, kann ich die Breite und Länge erhalten. Aber ich möchte einen Marker zum gesuchten Ort hinzufügen und die Kamera dorthin bewegen. Ist es nicht möglich, @pablobu – Rakib07003

Antwort

0

googleMap Variable ist null, weil Sie nie die Variable zuweisen.

onMapReady hinzufügen:

this.googleMap = googleMap; 
+0

vielen Dank Mann. Ich habe viel gesucht und gefragt, aber keine Lösung gefunden. Jetzt funktioniert es – Rakib07003

+0

Es wäre hilfreich, wenn Sie nur die onPause und onDestroy Methode sehen. Meine onPause-Methode funktioniert nicht, wenn ich versuche, die Seite meiner App zu verlassen, während ich an diesem Fragment bin. Wenn ich zu meinem Fragment zurückkomme, kann ich die Karte nicht sehen. Wenn ich zu einem anderen Fragment umkehre, stürzt die App ab. Muss ich etwas ändern? @pablobu – Rakib07003

+0

Was willst du mit deinem Code dort erreichen? Haben Sie sich über einen MapView Gedanken gemacht? – pablobu