Google Android Map上的不同名称标记

我想在android地图上添加许多不同的标记。 我的代码到目前为止工作良好,一遍又一遍的覆盖

mapOverlays = mapView.getOverlays(); drawable = this.getResources().getDrawable(R.drawable.marker); itemizedOverlay = new MyItemizedOverlay(drawable); OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); mapOverlays.add(itemizedOverlay); 

这工作很好迄今。 但是每个标记都是一样的。 我现在要做的就是在地图上有不同的标记,就像你在Google Maps Webapp上看到的标记(标记“A”,下一个“B”等等)。 我怎样才能做到这一点? 我必须添加一个额外的PNG标记文件到我的应用程序? (marker_a.png,marker_b.png,…)还是有一个更简单的方法来实现呢? 也可能会有26个以上的结果,所以我可能需要不同颜色的标记。

Solutions Collecting From Web of "Google Android Map上的不同名称标记"

其中一个答案为每个标记组提供不同的ItemizedOverlay解决scheme。 你可以通过调用overlayItem.setMarker(drawable)来实现单一的ItemizedOverlay

如果您打算从资源中加载标记,请不要忘记打电话给:

 drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight()); 

在你调用setMarker之前。 否则标记将不会显示。

由于标记types为Drawable ,所以可以像其他Drawable一样获取它们,包括创build它们的运行时。

这是一个示例项目 ,在单个ItemizedOverlay上显示几个不同的PNG。 您只需重写一些绘图方法来处理不同的PNG。

是的,你需要另一个PNG,所以它看起来像这样:

 mapOverlays = mapView.getOverlays(); // All "A"s drawable = this.getResources().getDrawable(R.drawable.marker_a); itemizedOverlay = new MyItemizedOverlay(drawable); OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); mapOverlays.add(itemizedOverlay); // All "B"s drawable = this.getResources().getDrawable(R.drawable.marker_b); itemizedOverlay = new MyItemizedOverlay(drawable); OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); mapOverlays.add(itemizedOverlay); 

我也被困在相同的情况下,我想编号A,B,C的插针。

好消息是我find了解决办法。 我只创build了一个带背景的TextView,并dynamic地插入了一个数字并将其转换为Drawable。

您可以创build不同的TextView与您想要的针颜色背景。

这里是我回答我的问题的链接 。 🙂

我用这个代码:

  OverlayItem crtItem = new OverlayItem( getPoint( Double.parseDouble(latCoordRow),Double.parseDouble(longCoordRow) ), nameRow , addressRow ); Drawable crtMarker = markerIconsArray.get(categoryRow); //my current drawable (from a HashMap) crtItem.setMarker(crtMarker); // set new marker crtMarker.setBounds(0, 0, crtMarker.getIntrinsicWidth(),crtMarker.getIntrinsicHeight()); //setBounds boundCenterBottom(crtMarker); //correct shadow problem 

如果你不设置Bounds,你的drawable将不会显示。