0

ジオロケーションが変更されるたびに、「imhere」というテキストでダイアログを表示するなどのアクションを実行したいと思います。

MyLocationOverlayを使用して、Googleマップのマップビュー上の自分の場所にドットを描画しています。

どうすればそれを達成できますか?

4

2 に答える 2

1

以下はロケーションリスナークラスです-

private MyOverLay draw = new MyOverLay();

 class MyLocationListener_gps implements LocationListener {
                public void onLocationChanged(Location location) {

                    clat = location.getLatitude();
                    clon = location.getLongitude();
                                GeoPoint geoPoint = new GeoPoint((int) (clat * 1E6),
                                        (int) (clon * 1E6));
                                    mapView.getController().animateTo(geoPoint);

                                    draw = new MyOverLay(geoPoint);
                                    mapView.getOverlays().add(draw);
        }
                }

これがコードオーバーレイクラスです-

class MyOverLay extends Overlay {
        private GeoPoint gp1;
        private int mRadius = 3;

        public MyOverLay() {

        }

        public MyOverLay(GeoPoint gp1) {
            this.gp1 = gp1;
        }

        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow,
                long when) {

            Projection projection = mapView.getProjection();
            if (shadow == false) {

                Paint paint = new Paint();
                paint.setAntiAlias(true);

                Point point = new Point();
                projection.toPixels(gp1, point);
                paint.setColor(Color.BLUE);

                RectF oval = new RectF(point.x - mRadius, point.y - mRadius,
                        point.x + mRadius, point.y + mRadius);

                canvas.drawOval(oval, paint);
            }

            return super.draw(canvas, mapView, shadow, when);
        }

    }

uが移動し、urが座標を変更すると、青い点が描画されます。

于 2012-09-25T23:44:43.317 に答える
0

onLocationChangedメソッドをオーバーライドします。

// Create an overlay to show current location
mMyLocationOverlay = new MyLocationOverlay(this, mMapView) {
  @Override
  public void onLocationChanged(android.location.Location location) {
    String text = "New coordinates: " + location.getLatitude() + ", " + location.getLatitude();
    Toast toast = Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT);
    toast.show();
    super.onLocationChanged(location);
  }

};
mMyLocationOverlay.runOnFirstFix(new Runnable() { public void run() {
  mMapView.getController().animateTo(mMyLocationOverlay.getMyLocation());
}});

mMapView.getOverlays().add(mMyLocationOverlay);
于 2012-09-25T13:15:37.893 に答える