【发布时间】:2015-12-11 10:18:55
【问题描述】:
我在我的应用程序中使用 Google Map v2,但遇到了非常奇怪的问题。
在地图上,我正在绘制自定义标记 - 不同颜色的圆形对象,数字表示某种信息。
问题是,对于 Android 6.0,在取消位置权限并返回应用程序后,我的地图标记是使用默认图标绘制的。在我重新启动应用程序之前,重新授予权限不会改变问题。
有趣的是,如果在启动应用程序时禁用了位置权限,则绘制我的自定义标记可以正常工作。只有当应用程序正在运行,然后我切换位置权限(关闭或打开)时,我的标记才会更改为默认值。
有人知道如何解决这个问题吗?我想在设置中切换位置权限(这与在地图上绘制标记无关)并且仍然绘制我的自定义标记而不是默认标记。
编辑: 只是为了澄清 - 当我回到应用程序时,我正在重绘标记。问题是它们不再使用我的自定义图标,而是使用默认的谷歌标记图标。代码:
public void addBay(final String mapMarkerId, final Position position, String status) {
if(mapService.getMap() != null) {
final BitmapDescriptor icon = getIconForStatus(status);
runOnUiThread(new Runnable() {
@Override
public void run() {
Marker newMarker = addMarkerToGoogleMap(position, icon);
markers.put(mapMarkerId, newMarker);
}
});
}
}
private Marker addMarkerToGoogleMap(Position position, BitmapDescriptor icon) {
return mapService.getMap().addMarker(new MarkerOptions()
.position(new LatLng(position.latitude, position.longitude))
.anchor(0.5f, 0.5f)
.icon(icon));
}
public BitmapDescriptor getIconForStatus(String status) {
switch (status) {
case BayDto.STATUS_FREE:
return bayStatusFreeIcon;
case BayDto.STATUS_OCCUPIED:
return bayStatusOccupiedIcon;
case BayDto.STATUS_UNKNOWN:
return bayStatusUnknownIcon;
default:
return null;
}
}
public void initIcons() {
bayStatusFreeIcon = BitmapDescriptorFactory.fromBitmap(drawableUtils.createSingleMarkerFromImage(R.drawable.area_above_9_places));
bayStatusOccupiedIcon = BitmapDescriptorFactory.fromBitmap(drawableUtils.createSingleMarkerFromImage(R.drawable.status_occupied));
bayStatusUnknownIcon = BitmapDescriptorFactory.fromBitmap(drawableUtils.createSingleMarkerFromImage(R.drawable.status_unknown));
}
【问题讨论】:
标签: android dictionary marker