私は同じ問題がありました。私はonLayout()メソッドの終わりにzoomToBoundingBox()を呼び出すことでそれに対処しました。
マップライブラリの選択から私を保護するために使用する独自のMapViewサブクラスがあります。このクラスには、clearPoints/addPoint/layoutPointsスタイルのインターフェイスがあります。 layoutPoints()メソッド内で、ポイントのコレクションからアイテム化されたオーバーレイを作成し、クラスのインスタンスメソッドに格納されているバウンディングボックスを作成します。
public class MyMapView extends MapView {
// The bounding box around all map points
// Used to determine the correct zoom level to show everything
private int minLat = Integer.MAX_VALUE;
private int minLon = Integer.MAX_VALUE;
private int maxLat = Integer.MIN_VALUE;
private int maxLon = Integer.MIN_VALUE;
private BoundingBoxE6 boundingBox;
マイonLayout()のオーバーライドがあります
/* (non-Javadoc)
* @see org.osmdroid.views.MapView#onLayout(boolean, int, int, int, int)
*/
@Override
protected void onLayout(boolean arg0, int arg1, int arg2, int arg3, int arg4) {
super.onLayout(arg0, arg1, arg2, arg3, arg4);
// Now that we have laid out the map view,
// zoom to any bounding box
if (this.boundingBox != null) {
this.zoomToBoundingBox(this.boundingBox);
}
}
(除いて、私は、これはそれを行うための最善の方法であるかどうかわからないんだけど、私のために働くようですズームが少し遠すぎるように見えますが、別の問題です)。
これを試したが、MyMapViewでビューを作成できないmapView =(MapView)findViewById(R.id.mapview); – thanasio2
は、layout.xmlファイルやビューの作成方法に影響しますか?私が行う場合:mapView =(MyMapView)findViewById(R.id.mapview);それはキャストを実行することを拒否し、クラッシュ... !!! – thanasio2
マップビュー(実際には私のビューすべて)をプログラムで作成します。右のコンストラクタで "MyMapView"を定義して、IDEがMyMapViewをXML内に作成できるようにする方法があると思います。しかし、それは何年も前に読んでいた「Androidで最初に始めたときには」ぼんやりしているからです。 – Colin