【发布时间】:2016-12-08 16:59:13
【问题描述】:
我有一个 Viewpager,它有 4 个选项卡,其中一个选项卡有一张地图。 我要在运行时更改 android GoogleMap 标记的图标。我做了以下代码
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View rootView = inflater.inflate(R.layout.fragment_menu, container, false);
mMapView = (MapView) rootView.findViewById(R.id.mapView);
mMapView.onCreate(savedInstanceState);
mMapView.onResume(); // needed to get the map to display immediately
try {
MapsInitializer.initialize(getActivity().getApplicationContext());
} catch (Exception e) {
e.printStackTrace();
}
mMapView.getMapAsync(new OnMapReadyCallback() {
@Override
public void onMapReady(GoogleMap mMap) {
googleMap = mMap;
// For showing a move to my location button
googleMap.setMyLocationEnabled(true);
// For dropping a marker at a point on the Map
/* googleMap.addMarker(new MarkerOptions().position(sydney).title("Marker Title").snippet("Marker Description")).
setIcon(BitmapDescriptorFactory.fromResource(R.drawable.position_icon));*/
googleMap.setOnMyLocationChangeListener(new GoogleMap.OnMyLocationChangeListener() {
@Override
public void onMyLocationChange(Location location) {
sydney=new LatLng(location.getLatitude(), location.getLongitude());
googleMap.addMarker(new MarkerOptions().position(sydney).title(""))
.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.position_icon));
CameraPosition cameraPosition = new CameraPosition.Builder().target(sydney).zoom(12).build();
googleMap.animateCamera(CameraUpdateFactory.newCameraPosition(cameraPosition));
googleMap.setOnMarkerClickListener(new GoogleMap.OnMarkerClickListener() {
@Override
public boolean onMarkerClick(Marker marker) {
marker.setIcon(BitmapDescriptorFactory.fromResource(R.drawable.logo));
return false;
}
});
}
});
// For zooming automatically to the location of the marker
/* */
}
});
return rootView;
}
但不幸的是,然后我点击标记图标,它已更改,但几秒钟后,前一个标记与新标记图标重叠。 上面的代码是 TabLayout 的第一个选项卡,我说它有一个地图,它是一个片段。
【问题讨论】:
-
发生这种情况是因为每当您的位置发生变化时,您都会添加一个新标记。当您单击一个标记时,其图标会变为 logo,但几秒钟后,位置也会发生变化,并且您的代码会添加一个带有 position_icon 的新标记,因为新位置靠近旧位置,新标记与旧位置重叠。
-
@HarjotSinghOberai 你有什么解决方案来实现这个目标
-
您能否详细说明您要达到的目标。
-
@HarjotSinghOberai 我想在用户点击标记时更改地图标记图标,并在第二次点击相机打开的 googlemap 标记图标时更改地图标记图标,以此类推
-
您想在位置变化时添加新标记吗?或者您希望标记移动到新位置?
标签: android google-maps google-maps-api-3