使用android和谷歌地图的多个标记

时间:2011-09-27 16:43:54

标签: android google-maps

在我的应用程序中,我想在Google地图中添加两个以上的标记。只是我可以添加一个标记但我不知道如何添加多个标记。请告诉我我该怎么做。

3 个答案:

答案 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);
}

}`