我有一个扩展ItemizedOverlay<OverlayItem>
的类,可以在MapView
上放置200个标记。
现在我想要一个特定的标记始终位于其他标记之上。
我该怎么做?
这是我将标记添加到叠加层的方式:
boolean isTopMarker;
for (Location location : locationList) {
isTopMarker = location.getTitle().equals("MyMarker");
markerOverlay.addOverlayItem(location.getLatitude(), location.getLongitude(), location.getTitle(), isTopMarker);
}
markerOverlay.moveTopMarkerToTop();
MarkerOverlay
类中的方法:
@Override
protected OverlayItem createItem(int i) {
return mOverlays.get(i);
}
@Override
public int size() {
return mOverlays.size();
}
public void addOverlayItem(OverlayItem overlayItem, boolean isTopMarker) {
if (isTopMarker) {
Drawable markerDrawable = getResources().getDrawable(R.drawable.marker_top);
boundCenterBottom(markerDrawable);
overlayItem.setMarker(markerDrawable);
topMarkerOverlayItem = overlayItem;
}
mOverlays.add(overlayItem);
populate();
}
public void addOverlayItem(double latitude, double longitude, String title, boolean isTopMarker) {
GeoPoint point = new GeoPoint((int) (latitude * 1000000), (int) (longitude * 1000000));
OverlayItem overlayItem = new OverlayItem(point, title, null);
addOverlayItem(overlayItem, isTopMarker);
}
public void moveTopMarkerToTop(){
if(topMarkerOverlayItem != null){
//What to do here?
}
}
我尝试将标记Drawable
重新分配给topMarkerOverlayItem
,但这不起作用。我还尝试删除并将topMarkerOverlayItem
添加到OverlayItem
s。
答案 0 :(得分:2)
尝试为您的特殊标记额外添加ItemizedOverlay
,并在ItemizedOverlay
列表的末尾添加此MapView.getOverlays()
。 MapView
将遍历从0开始到Overlays.count()的所有Overlays
。这种方式你的特殊叠加应该作为最后一个绘制,因此总是在最顶层!