2011-07-09 16 views
2

私は最初にMarkers(成功)を使ってコード化し、それが推奨されなくなったことを認識しました(特にクラスタリングの場合)。OpenLayers:なぜ私のベクターフィーチャーマーカーが間違っていますか?

OpenLayersをドキュメントとthis questionexamples givenを読んだ、私は私のベクトルを作成した、などいくつかのスタイルを追加しました...

しかし、彼らはすべての代わりに、彼らののLngLat(0,0)の周りに入れています適切な座標。

以下のジオメトリのプロパティはOKです。私はそこに何が欠けているのか分からない。

sreenshot

答えて

5

問題は、Googleマップ投影がEPSG:900913ですが、ベクター機能の座標はEPSG:4326です。

Googleマップ投影で座標を指定するか、OpenLayersを使用してクライアント側の座標を変換する必要があります。ここではあなたがそれを行う方法は次のとおりです。

feature.geometry.transform(new OpenLayers.Projection("EPSG:4326"), new OpenLayers.Projection("EPSG:900913")) 

あなたが機能を変換したら、マップにレイヤを追加することができ、それが正しく機能が表示されます。

+0

ありがとうございました!私はすぐに多くの質問が戻ってきますね:) – apneadiving

1

あなたは何投影座標を使用していますか? Googleマップの基本レイヤーを使用しているレイヤーの名前を前提としています。

Googleマップでは球形のメルケータ投影が使用され、OpenLayersではデフォルトでEPSG:4326が使用されます。 OpenLayersにはさまざまな投影間で座標を変換できるAPIがあり、すべてのレイヤーがうまく一緒に再生されます。

レイヤーの詳細については、これを実証するためのコードをいくつかご用意しています。

+0

ご協力いただきありがとうございます。私は、私がどの投影法を使用しているのかわからないことを認めています。私は実際にopenlayersの大きな写真を理解することはできません。/ RailsプラグインをGoogleマップ上に表示するようにコーディングしています。私はユーザーにopenlayersを選ぶ選択肢を与えたいと思っています。特定のopenlayersコードはここにあります:https://github.com/apneadiving/Google-Maps-for-Rails/blob/playground/public/javascripts/gmaps4rails.openlayers.jsあなたの専門知識をお寄せいただきありがとうございます。 – apneadiving

+0

あなたの助けてくれてありがとう、igortiはちょうど答えた、とにかく+1 – apneadiving

+0

実際に私はおそらく昨夜同じコードスニペットを提供できたかもしれないが、あまりにも多くの仮定をしたくない。 –

関連する問題