2

マップに複数のピンを同じ色で表示しましたが、場所ごとに異なる色のピンを表示する必要があります。コードは次のとおりです。

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

PASSWORDizedOverlay.java

 public AddItemizedOverlay(Drawable drawable, MapView mapView) {
         super(boundCenter(drawable), mapView);
         c = mapView.getContext();
     }

ここでは、ピン画像をドローアブル名として「color1」として渡しましたが、異なる色のピンをドローアブルとして送信する必要があります。その結果、各場所は異なるピンでマークされます。

4

3 に答える 3

3

コードに従って、itemizedOverlay = new AddItemizedOverlay(drawable, mapView);ここで任意の条件を作成し、それぞれのドローアブルを変更しますparamLat。したがって、itemizedOverlay内側のforループを置き換え、別のドローアブルをif条件で設定します。

于 2012-10-29T06:57:23.720 に答える
2

forループでPASSWORDizesOverlayオブジェクトを作成し、プッシュピンに別の異なる画像を渡します。

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);
于 2012-10-29T06:56:29.780 に答える
1

単一のに追加されたItemizedOverlayそれぞれに異なるマーカーを割り当てることができるため、異なるマーカーを持つために複数を追加する必要はありません。OverlayItemItemizedOverlay

それを行う方法の例を以下に示します。

以下を使用して、各マーカー(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),-

次にItemizedOverlay、デフォルトとしてピンの1つを使用して作成します。

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

よろしく

于 2012-10-29T11:49:05.240 に答える