2017-10-12 62 views
-1

我无法将当前位置传递给我的LatLng变量以显示在我的谷歌地图上。我不知道如何从我的位置侦听器方法中的我的覆盖语句传递值。我试图实现一个应用程序,只需获取GPS坐标并在地图上放置一个标记。我的应用中的GPS位置

@Override 
     protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_maps); 


    locationManager = (LocationManager)getSystemService(LOCATION_SERVICE); 

    //obtain location 
    listener = new LocationListener() { 
     @Override 
     public void onLocationChanged(Location location) { 
      double lat = location.getLatitude(); 
      double lng = location.getLongitude(); 
      LatLng appoint = new LatLng(lat,lng); 
      return appoint; 
     } 

     @Override 
     public void onStatusChanged(String s, int i, Bundle bundle) { 

     } 

     @Override 
     public void onProviderEnabled(String s) { 
     } 

     @Override 
     public void onProviderDisabled(String s) { 
     } 
    }; 

    // Obtain the SupportMapFragment and get notified when the map is ready to be used. 
    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager() 
      .findFragmentById(R.id.map); 
    mapFragment.getMapAsync(this); 

} 

@Override 
public void onMapReady(GoogleMap googleMap) { 
    mMap = googleMap; 

    double lat = 34.014783; 
    double lng = -84.571381; 

    // Add a marker in Appoint from database and move the camera 
    LatLng appoint = new LatLng(lat,lng); 
    mMap.addMarker(new MarkerOptions().position(appoint).title("Where the wild gays are")); 
    mMap.moveCamera(CameraUpdateFactory.newLatLng(appoint));` 
+0

尝试创建方法并从您的onlocationchanged方法传递lat和long方法 –

回答

0

好,onLocationChanged不返回任何void,所以你不能返回LatLng对象,但你可以添加到mMap对象(只要不是null)。

E.g.

public void onLocationChanged(Location location) { 
     double lat = location.getLatitude(); 
     double lng = location.getLongitude(); 
     LatLng appoint = new LatLng(lat,lng); 
     if(mMap != null) { 
      mMap.addMarker(new MarkerOptions().position(appoint).title("Where the wild gays are")); 
      mMap.moveCamera(CameraUpdateFactory.newLatLng(appoint)); 
     } 
    }