如何在Android中的地图中显示不同的颜色引脚



我在地图中以相同颜色显示了多个销钉,但是我需要为每个位置显示不同的颜色引脚,这是代码,

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);

问候

最新更新