1

OpenLayers のドキュメントによると、コンストラクター OpenLayers.Map() は、 「マップの初期範囲」である追加のプロパティ範囲を許可します(こちらを参照)。

しかし、効果を得ることができません。マップの作成後に.zoomToExtent() を呼び出すことで、初期範囲を設定できることはわかっています。しかし、 eventListenersプロパティにzoomendイベントを設定しましたが、 . zoomToExtent()への最初の呼び出しでトリガーしたくないため、この範囲プロパティを使用したいと思います。この範囲プロパティの使用方法を知っている人はいますか?

これは動作していないコードです

map = new OpenLayers.Map('map',{
        extent: bounds,
        layers: [osmLayer,vectorLayer],
        projection: "EPSG:900913",
        eventListeners: {
            zoomend: function() {
                //..zoomend event listener code
            }
        }
    });

上記の例では:

  • 境界は有効なOpenLayers.Boundsオブジェクトです
  • osmLayervectorLayerは有効なOpenLayers.Layerオブジェクトであり、osmLayerはベース レイヤーです。

上記のコードで何が起こるかというと、マップが完全に縮小され (実際には何も見えません)、パンしようとするとエラーがスローされます。マップを正しい状態にするには、ユーザーがズームインする必要があり、パンが再び機能し、マップが表示されます。

4

2 に答える 2

0

私は同じ問題に遭遇しました。

ドキュメントに記載されている「範囲」オプションは、おそらく誤って存在します。それは存在しない。ソース コードを確認したところ、そのようなオプションを処理するコードは見つかりませんでした。著者に連絡したところ、彼はすでにドキュメントからこのオプションを削除するためのプル リクエストを作成しました。

于 2013-07-17T20:57:01.210 に答える
0

あなたがリストしたコードを機能させる方法がわかりませんが、次の代替手段が私にとってはうまくいきました:

map = new OpenLayers.Map('map',{projection: new OpenLayers.Projection("EPSG:4326")});

//ADD A BUNCH OF LAYERS AND SUCH HERE

//Set map center to this location at this zoom level
map.setCenter(new OpenLayers.LonLat(-93.9196,45.7326),5);

最後の手段として、ズーム機能の先頭に次の行を追加できます。

if(!map_ready) return;

そしてmap_ready、適切なタイミングで変数を true に設定します。

于 2012-10-07T08:01:17.693 に答える