在我的应用程序中,我想在Google地图中添加两个以上的标记。只是我可以添加一个标记但我不知道如何添加多个标记。请告诉我我该怎么做。
答案 0 :(得分:2)
这是让ItemizedOverlay
处理多个标记的问题,在size()
和createItem()
方法中。 size()
方法应该返回您想要的标记数量,createItem()
应该根据索引返回每个OverlayItem
。
Here is a sample project演示了带有四个标记的地图。
答案 1 :(得分:0)
如果使用较少数量的标记,则还可以多次使用相同的叠加层。基本地图叠加更容易使用,但在某一点之后,它变得非常低效。我使用了两个类的实例作为当前位置和标记位置,如下所示:
overlayList = mapView.getOverlays();
overlayList.clear();
locationOverlay = new MapOverlay();
pushpinOverlay = new MapOverlay();
在此处设置png,x偏移和y偏移的标记ID。 (在MapOverlay类中编码的函数。)
overlayList.add(locationOverlay);
overlayList.add(pushpinOverlay);
最终使地图无效以强制重绘。
对于两个标记,它的效果非常好。
答案 2 :(得分:0)
您可以使用ItemizedOverlay添加多个布局。这里有一个Itemize Overlay的示例代码 `public class YourItemizedOverlay扩展了Itemize Overlay {
private ArrayList<OverlayItem> myOverlays ;
public YourItemizedOverlay(Drawable defaultMarker) {
super(boundCenterBottom(defaultMarker));
yourOverlays = new ArrayList<OverlayItem>();
populate();
}
public void addOverlay(OverlayItem overlay){
yourOverlays.add(overlay);
populate();
}
@Override
protected OverlayItem createItem(int i) {
return yourOverlays.get(i);
}
// Removes overlay item i
public void removeItem(int i){
yourOverlays.remove(i);
populate();
}
@Override
public int size() {
return yourOverlays.size();
}
public void addOverlayItem(OverlayItem overlayItem) {
yourOverlays.add(overlayItem);
populate();
}
public void addOverlayItem(int lat, int lon, String title) {
try {
GeoPoint point = new GeoPoint(lat, lon);
OverlayItem overlayItem = new OverlayItem(point, title, null);
addOverlayItem(overlayItem);
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}
}
@Override
protected boolean onTap(int index) {
// TODO Auto-generated method stub
String title = yourOverlays.get(index).getTitle();//display message when you touch your marker
Toast.makeText(YourMapActivity.context, title, Toast.LENGTH_LONG).show();
return super.onTap(index);
}
}`