Android 点击自定义MyPositionIcon可创建自定义MyPositionMarker的副本
我正在尝试替换mMpap.SetMyPositiontrue;与我自己的功能。我在这方面取得了一些成功,当点击我的位置图标的自定义图像时,它会使用我的自定义标记将相机移动到当前位置 除了点击“我的位置”图标,它会将标记的副本保留到该位置,并使用新标记移动到当前位置之外,其他一切都可以正常工作 我对安卓系统开发相当陌生,正在寻求帮助 onCreateBundle savedInstanceState中的代码是: 得到的位置是:Android 点击自定义MyPositionIcon可创建自定义MyPositionMarker的副本,android,google-maps-markers,Android,Google Maps Markers,我正在尝试替换mMpap.SetMyPositiontrue;与我自己的功能。我在这方面取得了一些成功,当点击我的位置图标的自定义图像时,它会使用我的自定义标记将相机移动到当前位置 除了点击“我的位置”图标,它会将标记的副本保留到该位置,并使用新标记移动到当前位置之外,其他一切都可以正常工作 我对安卓系统开发相当陌生,正在寻求帮助 onCreateBundle savedInstanceState中的代码是: 得到的位置是: 请提供帮助。根据您的情况,您可以尝试以下任一方法: 1.如果地图中只有
请提供帮助。根据您的情况,您可以尝试以下任一方法:
1.如果地图中只有一个标记,则在添加新标记之前,请使用mMap.clear清除地图;
2.如果有多个标记,则必须将当前标记对象保留为成员变量mMarker。然后,在添加新标记之前,可以使用mMarker.remove 添加新标记之前,请使用mMap.clear清除地图;谢谢@Akshay Bhat'AB'。成功了。如果你能回答下面的问题,我会接受的。问题:谢谢你的解决方案。我只是缺少了这行代码。
ImageView img = (ImageView) findViewById(R.id.myPostionButton);
img.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
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();
}
}
});
}
mMap = googleMap;
getTheLocation();