Java 如何在Android中在地图中显示不同颜色的PIN?
我在地图上以相同的颜色显示了多个管脚,但我需要为每个位置显示不同的颜色管脚,下面是代码Java 如何在Android中在地图中显示不同颜色的PIN?,java,android,android-maps,Java,Android,Android Maps,我在地图上以相同的颜色显示了多个管脚,但我需要为每个位置显示不同的颜色管脚,下面是代码 Drawable drawable; AddItemizesOverlay itemizedOvrealy; drawable = this.getResources().getDrawable(R.drawable.color1); itemizedOverlay = new AddItemizedOverlay(drawable, mapView); for(int i=0
Drawable drawable;
AddItemizesOverlay itemizedOvrealy;
drawable = this.getResources().getDrawable(R.drawable.color1);
itemizedOverlay = new AddItemizedOverlay(drawable, mapView);
for(int i=0;i<paramLat.size();i++)
{
lat = Double.parseDouble(paramLat.get(i));
lon = Double.parseDouble(paramLong.get(i));
geoPoint = new GeoPoint((int)(lat * 1E6), (int)(lon *1E6));
geopoints.add(geoPoint);
List<Overlay> mapOverlays = mapView.getOverlays();
name = calloutName.get(i);
overlayitem[i] = new Overlay
Item(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i));
itemizedOverlay.addOverlay(overlayitem[i]);
mc.animateTo(geoPoint);
}
mapView.getOverlays().add(itemizedOverlay);
这里把pin图像作为可绘制名称传递给'color1',但我需要发送不同颜色的pin作为可绘制名称。结果,每个位置都用不同的管脚标记。在for循环中创建AddItemizeOverlay对象,并为图钉传递不同的图像
GeoPoint point = new GeoPoint(lat.intValue(), lng.intValue());
drawable = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem = new OverlayItem(point, "", "");
itemizedOverlay.addOverlay(overlayItem);
mapOverlays.add(itemizedOverlay);
GeoPoint point2 = new GeoPoint(lt2.intValue(),long2.intValue() );
// All "B"s
drawable = this.getResources().getDrawable(R.drawable.icon);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem1 = new OverlayItem(point2, "", "");
itemizedOverlay.addOverlay(overlayItem1);
mapOverlays.add(itemizedOverlay);
根据您的代码,
itemizedOverlay=newadditemizedoverlay(可绘制,地图视图)
在这里,您可以设置任何条件并更改每个paramLat
的可绘制值。因此,将您的itemizedOverlay
替换为for循环内部,并使用if条件设置不同的drawable。您不需要添加多个itemizedOverlay
来具有不同的标记,因为您可以为添加到单个itemizedOverlay
的每个OverlayItem
指定不同的标记
下面举一个如何做的例子
可以使用以下方法创建和定义每个标记(pin1、pin2)的边界:
然后,您可以使用以下其中一个引脚作为默认引脚创建项目化Overlay
:
itemizedOverlay = new AddItemizedOverlay(pin1, mapView);
要添加使用pin1
的标记时:
overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i));
itemizedOverlay.addOverlay(overlayitem);
要添加使用pin2
的标记时:
overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i));
overlayitem.setMarker(pin2);
itemizedOverlay.addOverlay(overlayitem);
最后,将ItemizedOverlay
添加到“地图视图”:
mapView.getOverlays().add(itemizedOverlay);
关于Hi,请在最后一个mapView.getOverlays().add(ItemizeOverlay)的for循环中尝试此代码;drawable=this.getResources().getDrawable(R.drawable.marker);我们可以将图像文件名存储为字符串,并将其用于获取可绘制的资源id吗?
overlayitem = new OverlayItem(geoPoint, calloutName.get(i), "Time: " + calloutTime.get(i));
overlayitem.setMarker(pin2);
itemizedOverlay.addOverlay(overlayitem);
mapView.getOverlays().add(itemizedOverlay);