0

私が達成したいのは、2種類のマーカーを地図上に表示することです。

1)データベースから引き出されたイベントを表示する赤いマーカー(実行-itemizedOverlay)

2)地図上にユーザーの位置を動的に表示するオレンジ色のマーカー(itemizedOverlay2)。

ItemizedOverlayを使用して2つの異なるレイヤー(1つはイベント用、もう1つはユーザーの場所用)を使用していますが、ユーザーの位置を示す動的マーカーに問題があります。

問題:

何が起こるかというと、LocationListenerは緯度/経度を正常に取得し、マップ上にポイントを配置しますが、前のポイントはまだ存在しています。そのため、ユーザーの場所を示すマーカーの軌跡があります。

インターネットの検索で見つけたいくつかの方法を実装しましたが、onLocationChangedの呼び出し中にはいずれも発生しません。

class myLocationListener implements LocationListener{
        OverlayItem overlayItem;


        @Override
        public void onLocationChanged(Location location) {

            if (location != null){

                mapOverlays.remove(itemizedOverlay2);
                mapView.invalidate();

                lat = location.getLatitude();
                longi = location.getLongitude();
                GeoPoint point = new GeoPoint((int) (lat * 1E6), (int) (longi * 1E6));
                mControl.animateTo(point);

                overlayItem = new OverlayItem(point, "My Location", "This is probably where you are");
                itemizedOverlay2.addOverlay(overlayItem);
                mapOverlays.add(itemizedOverlay2);

            }

        }

私のコードがもっと必要になるかもしれないことは知っていますが、このブロックにとどまって、私が間違っているところを誰かが見ているかどうかを確認しましょう。

ありがとうございました。

4

2 に答える 2

1

itemizedOverlay2が属するクラスのコードを投稿していませんが、ItemizedOverlayを拡張していると思います。addOverlay()メソッドがあるので、.clear()メソッドもあると思います。

その場合は、新しい場所を追加する前にclear()を呼び出す必要があります

itemizedOverlay2.clear();
itemizedOverlay2.addOverlay(overlayItem);
于 2012-04-25T15:30:27.513 に答える
0

組み込みクラスを使用するMyLocationOverlay

position = new MyLocationOverlay(this, mapView);
position.enableMyLocation();
mapOverlays.add(position);
于 2012-04-25T15:32:38.327 に答える