マウンテンバイクのトレイルを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週間解決策を探しましたが、何も見つかりませんでした。