【问题标题】:Putting category to markers android maps api v2将类别标记为 android maps api v2
【发布时间】:2014-06-30 03:23:34
【问题描述】:

我想像http://econym.org.uk/gmap/example_categories.htm 这样对我的标记进行分类,我不知道如何将类型输入到我的标记中。我被困在这里。这是我的代码。我试过了,但似乎不对

Marker malls = mMap.addMarker(new MarkerOptions()
    .position(new LatLng(14.589740, 120.982111))
    .title("Welcome to the City of Maynila"))
    .setIcon(BitmapDescriptorFactory.fromResource(R.drawable.blue));

任何帮助将不胜感激。谢谢

【问题讨论】:

  • 你面临什么问题?
  • 分类标记。例如将其分类为商场、餐馆、加油站
  • 表示你想在不同的 2 类别上显示不同的 2 标记?
  • 现在你面临的问题是什么?

标签: android google-maps android-maps-v2 markers


【解决方案1】:

最好的方法是使用集群管理器将项目添加到地图中。

您创建一个实现 ClusterItem 的类并创建您自己的项目。 您需要一个函数来选择名为 setIconByData 的图标类型:

public class MyItem implements ClusterItem {
    private final LatLng mPosition;
    private MarkerOptions markerOptions;
    private String data;
    private int iconReference;

public MyItem(double lat, double lng) {
    mPosition = new LatLng(lat, lng);
}

public MyItem(MarkerOptions markerOptions) {
    this.setMarkerOptions(markerOptions);
    mPosition = markerOptions.getPosition();
}

public MyItem(LatLng latLong) {
    mPosition = latLong;
}

@Override
public LatLng getPosition() {
    return mPosition;
}

public MarkerOptions getMarkerOptions() {
    return markerOptions;
}

public void setMarkerOptions(MarkerOptions markerOptions) {
    this.markerOptions = markerOptions;
}

public int getIconReference() {
    return iconReference;
}

public void setIconReference(int iconReference) {
    this.iconReference = iconReference;
}

public void setIconByData(String data, MyItem myItem) {
    if(data.equals("museum"))
        myItem.setIconReference(iconMuseum);
    else
        myItem.setIconReference(iconGolf);
}

}

您需要在活动或片段类中使用函数来组织项目。 这个函数需要返回一个Collection of items:

private Collection<MyItem> organizeItems(LatLng latlong) {
   Collection<MyItem> res = new ArrayList<MyItem>();
   MarkerOptions markerOptions = new MarkerOptions().position(latlong);
   MyItem item = new MyItem(markerOptions);
   item.setIconByValencia("golf", item);
   res.add(item);   
   return res;
}

然后,当您想要清理管理器并添加新项目时:

mClusterManager = new ClusterManager<MyItem>(v.getContext(), map); //on create

//when you want to refresh the items:
mClusterManager.clearItems();
mClusterManager.addItems(addItems(BOUNDS, TicketTypeProduct.TO));
mClusterManager.cluster();

您可以在此处查看使用集群和集群管理器的详细信息: https://developers.google.com/maps/documentation/android/utility/marker-clustering?hl=en-EN

【讨论】:

    猜你喜欢
    • 2015-11-23
    • 2014-01-15
    • 1970-01-01
    • 2013-03-22
    • 1970-01-01
    • 1970-01-01
    • 2012-12-31
    • 1970-01-01
    • 2013-01-12
    相关资源
    最近更新 更多