9

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 を超える結果が得られる可能性があるため、異なる色のマーカーが必要になる可能性があります。

4

5 に答える 5

22

答えの 1 つは、ItemizedOverlayマーカー グループごとに異なるソリューションを提供します。ItemizedOverlayを呼び出すことで、シングルで同じことを達成できますoverlayItem.setMarker(drawable)

リソースからマーカーをロードする場合は、次の呼び出しを忘れないでください。

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

あなたが電話する前にsetMarker。それ以外の場合、マーカーは表示されません。

マーカーは型であるため、ランタイムの作成を含めDrawable、他の と同様に取得できます。Drawable

于 2010-05-27T09:21:49.697 に答える
4

これは、1 つの .xml ファイルにいくつかの異なる PNG を表示するサンプル プロジェクトItemizedOverlayです。さまざまな PNG を処理するには、いくつかの描画メソッドをオーバーライドする必要があります。

于 2010-04-15T20:03:40.030 に答える
1

私も同じ状況で立ち往生していたので、A、B、Cのピンに番号を付けたいと思っていました..

良いニュースは、解決策を見つけたことです。ピンの背景を持つ TextView のみを作成し、それに数値を動的に挿入して、それを Drawable に変換しました。

必要なピンの色の背景を持つ別の TextView を作成できます。

ここに私が答えた私の質問へのリンクがあります。:)

于 2011-06-30T04:06:49.280 に答える
1

Yes, you need another png, so it would look like this:

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);
于 2010-04-15T19:52:37.777 に答える
0

私はこのコードを使用しました:

 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

setBounds を設定しない場合、ドローアブルは表示されません。

于 2011-12-05T00:19:18.227 に答える