0

マウンテンバイクのトレイルをGoogleマップにプロットするアプリを作成しようとしています。Googleマップの部分が機能しています。ただし、いくつかのジオポイントをプロットして接続しようとすると、ジオポイントが表示されて接続されますが、Googleマップは表示されなくなります。灰色のタイルのみが表示されます。動作するポイントをプロットする前のコードを次に示します。

public class DPHTmaps extends MapActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapController mMapController;
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        mMapController = mapView.getController();
        mMapController.setZoom(18);
    }

    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }
}

次に、コードをこれに変更して、いくつかのジオポイントをプロットして接続すると、マップタイルが灰色になります。

public class DPHTmaps extends MapActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        MapController mMapController;
        MapView mapView = (MapView) findViewById(R.id.mapview);
        mapView.setBuiltInZoomControls(true);
        mMapController = mapView.getController();
        mMapController.setZoom(18);
        // Two points in Backside trail
        GeoPoint point1 = new GeoPoint(-91777756,43311836);
        GeoPoint point2 = new GeoPoint(-91777627,43311718);
        mMapController.setCenter(point2);
        // Pass the geopoints to the overlay class
        MapOverlay mapOvlay = new MapOverlay(point1, point2);
        mapView.getOverlays().add(mapOvlay);
    }

    public class MapOverlay extends com.google.android.maps.Overlay {
        private GeoPoint mGpt1;
        private GeoPoint mGpt2;
        protected MapOverlay(GeoPoint gp1, GeoPoint gp2 ) {
            mGpt1 = gp1;
            mGpt2 = gp2;
        }
        @Override
        public boolean draw(Canvas canvas, MapView mapView, boolean shadow, long when) {
            super.draw(canvas, mapView, shadow);
            Paint paint;
            paint = new Paint();
            paint.setColor(Color.RED);
            paint.setAntiAlias(true);
            paint.setStyle(Style.STROKE);
            paint.setStrokeWidth(2);
            Point pt1 = new Point();
            Point pt2 = new Point();
            Projection projection = mapView.getProjection();
            projection.toPixels(mGpt1, pt1);
            projection.toPixels(mGpt2, pt2);
            canvas.drawLine(pt1.x, pt1.y, pt2.x, pt2.y, paint);
            return true;
        }
    }
    @Override
    protected boolean isRouteDisplayed() {
        return false;
    }

これは私を狂わせてきました。私は2週間解決策を探しましたが、何も見つかりませんでした。

4

1 に答える 1

2

間違った順序で緯度/経度を GeoPoint コンストラクターに渡しているという事実と同じくらい簡単でしょうか? 最初に緯度を渡す必要があります。-91 は有効な緯度ではないという事実に基づいて、パラメーターが逆になっていると思います。

https://developers.google.com/maps/documentation/android/reference/com/google/android/maps/GeoPoint

于 2012-07-21T01:22:03.397 に答える