我正在尝试用我自己的函数替换mMpap.SetMyPosition(true);
函数。我在这方面取得了一些成功,当点击"我的位置图标"的自定义图像时,它会使用我的自定义标记将相机移动到当前位置。
一切都运行良好,除了每当点击"我的位置图标"时,它会在该位置留下标记的副本,并使用新标记移动到当前位置。
我是Android开发的新手,正在寻求一些帮助。
我在onCreate(Bundle savedInstanceState)
中的代码是:
ImageView img = (ImageView) findViewById(R.id.myPostionButton);
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
getTheLocation();
}
});
getTheLocation()
是:
if (location != null) {
final double latitude = location.getLatitude();
final double longitude = location.getLongitude();
LatLng latLng = new LatLng(latitude, longitude);
final Marker marker = mMap.addMarker(
new MarkerOptions()
.position(new LatLng(latitude, longitude))
.draggable(true)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.ic_marker)));
mMap.setTrafficEnabled(true);
mMap.setMinZoomPreference(10.0f);
mMap.setMaxZoomPreference(20.0f);
//mMap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16.0f),4000 , null);
mMap.moveCamera(CameraUpdateFactory.newLatLngZoom(latLng, 16.0f));
mMap.setOnCameraMoveListener(new GoogleMap.OnCameraMoveListener() {
@Override
public void onCameraMove() {
LatLng centerOfMap = mMap.getCameraPosition().target;
marker.setPosition(centerOfMap);
}
});
mMap.setOnCameraIdleListener(new GoogleMap.OnCameraIdleListener() {
@Override
public void onCameraIdle() {
LatLng centerOfMap = mMap.getCameraPosition().target;
marker.setPosition(centerOfMap);
double latitude = centerOfMap.latitude;
double longitude = centerOfMap.longitude;
Geocoder geocoder = new Geocoder(getApplicationContext());
try {
List<Address> addressList = geocoder.getFromLocation(latitude, longitude, 1);
String str = addressList.get(0).getAddressLine(0) + ", ";
str += addressList.get(0).getSubLocality() + ", ";
str += addressList.get(0).getLocality() + ", ";
str += addressList.get(0).getCountryCode();
mFromAddress.setText(str);
} catch (IOException e) {
e.printStackTrace();
}
}
});
}
onMapReady(GoogleMap googleMap)
是:
mMap = googleMap;
getTheLocation();
请帮忙。
您可以根据自己的情况尝试以下任一方法:
1. 如果地图中只有一个标记,在添加新标记之前,请使用mMap.clear();
清除地图
2.如果您有多个标记,则必须将当前标记对象保留为成员变量mMarker
。然后,在添加新标记之前,您可以使用mMarker.remove();
.