1

我有一个Android应用程序,我正在使用带有位置侦听器的Google地图。当地图第一次出现时,我将位置侦听器中的缩放设置设置为12,我在Google地图开发中相当新,所以我想知道如何在不影响缩放的情况下更新位置,一旦用户捏住更改缩放?以下是我的位置监听器。如何在不更改用户设置的缩放的情况下更新地图标记?

/** 
*Mylocationlistener class will give the current GPS location 
*with the help of Location Listener interface 
*/ 
private class Mylocationlistener implements LocationListener { 

    @Override 
    public void onLocationChanged(Location location) { 

     if (location != null) { 
      // ---Get current location latitude, longitude--- 

      Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
      Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
      currentLocation = new LatLng(location.getLatitude(), location.getLongitude()); 
      currentLatLng = new LatLng(location.getLatitude(), location.getLongitude()); 
      Marker currentLocationMarker = map.addMarker(new MarkerOptions().position(currentLocation).title("Current Location")); 
      // Move the camera instantly to hamburg with a zoom of 15. 
      map.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15)); 
      // Zoom in, animating the camera. 
      map.animateCamera(CameraUpdateFactory.zoomTo(12), 2000, null); 
      if (!firstPass){ 
       currentLocationMarker.remove(); 
      } 
      firstPass = false; 
      Toast.makeText(MapViewActivity.this,"Latitude = "+ 
        location.getLatitude() + "" +"Longitude = "+ location.getLongitude(), 
        Toast.LENGTH_LONG).show(); 

     } 
    } 

回答

3

您可以在侦听器中添加一个本地变量,并使用它来仅缩放第一个位置。该代码将如下所示:

private class Mylocationlistener implements LocationListener { 

    private boolean zoomed = false; 

    @Override 
    public void onLocationChanged(Location location) { 

    if (location != null) { 
     // ---Get current location latitude, longitude--- 

     Log.d("LOCATION CHANGED", location.getLatitude() + ""); 
     Log.d("LOCATION CHANGED", location.getLongitude() + ""); 
     currentLocation = new LatLng(location.getLatitude(), location.getLongitude()); 
     currentLatLng = new LatLng(location.getLatitude(), location.getLongitude()); 
     Marker currentLocationMarker = map.addMarker(new MarkerOptions().position(currentLocation).title("Current Location")); 
     // Move the camera instantly to hamburg with a zoom of 15. 
     map.moveCamera(CameraUpdateFactory.newLatLngZoom(currentLatLng, 15)); 
     // Zoom in, animating the camera. 
     if (!zoomed) { 
      map.animateCamera(CameraUpdateFactory.zoomTo(12), 2000, null); 
      zoomed = true; 
     }          
     if (!firstPass){ 
      currentLocationMarker.remove(); 
     } 
     firstPass = false; 
     Toast.makeText(MapViewActivity.this,"Latitude = "+ 
       location.getLatitude() + "" +"Longitude = "+ location.getLongitude(), 
       Toast.LENGTH_LONG).show(); 

    } 
} 
+0

谢谢。有效。 – yams 2013-03-21 17:22:50

相关问题