我在地图中以相同颜色显示了多个销钉,但是我需要为每个位置显示不同的颜色引脚,这是代码,
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);
AddeMizedOverlay.java
public AddItemizedOverlay(Drawable drawable, MapView mapView) {
super(boundCenter(drawable), mapView);
c = mapView.getContext();
}
在这里,PIN映像以" Color1"为绘制名称,但我需要将不同的颜色引脚发送为可绘制的销钉。结果,每个位置都以不同的销来标记。
根据您的代码,itemizedOverlay = new AddItemizedOverlay(drawable, mapView);
在这里您可以使用任何条件,并更改每个paramLat
的可绘制条件。因此,将您的itemizedOverlay
内部替换为循环,并在条件下设置不同的绘制。
在循环中创建AddeMizeSoverlay对象,并将不同的图像传递给PISH PIN。
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
即可具有不同的标记,因为您可以为每个添加到一个ItemizedOverlay
的每个OverlayItem
分配一个不同的标记。
bellow做到这一点的示例。
您使用:
创建并定义每个标记(PIN1,PIN2)的边界 pin1 = this.getResources().getDrawable(R.drawable.pin_gps);
pin1.setBounds((int)(-drawable_gps_pin.getIntrinsicWidth()/2),-drawable_gps_pin.getIntrinsicHeight(), (int)(drawable_gps_pin.getIntrinsicWidth()/2), 0);
pin2 = this.getResources().getDrawable(R.drawable.pin_gps);
pin2.setBounds((int)(-drawable_gps_pin.getIntrinsicWidth()/2),-
然后,您使用默认一个trhe引脚创建ItemizedOverlay
:
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":
mapView.getOverlays().add(itemizedOverlay);
问候