如何在不更改用户设置的缩放比例的情况下更新地图标记?
Posted
技术标签:
【中文标题】如何在不更改用户设置的缩放比例的情况下更新地图标记?【英文标题】:How do I update the map marker without changing the zoom that the user has set? 【发布时间】:2013-03-11 04:01:38 【问题描述】:我正在构建一个使用带有位置监听器的 Google 地图的 android 应用。当地图第一次出现时,我在位置监听器中将缩放设置为 12,我在谷歌地图开发方面相当新,所以我想知道一旦用户捏住以更改缩放,我如何在不影响缩放的情况下更新位置?下面是我的位置监听器。
/**
*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();
【问题讨论】:
【参考方案1】:您可以在侦听器中添加一个局部变量,并使用它仅缩放第一个位置。代码如下所示:
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();
【讨论】:
【参考方案2】:尝试使用这个:
map.animateCamera(CameraUpdateFactory.newLatLngZoom(currentLocationMarker.getPosition(), map.getCameraPosition().zoom));
【讨论】:
你一定是新手。这是几年前回答的。以上是关于如何在不更改用户设置的缩放比例的情况下更新地图标记?的主要内容,如果未能解决你的问题,请参考以下文章