2011-07-09 50 views
2

我第一次使用標記進行編碼(成功),然後意識到它不再被推薦(特別是對於羣集)。OpenLayers:爲什麼我的向量特徵標記錯位?

已經閱讀的OpenLayers doc和this questionexamples given,我已經建立了我的載體,增加了一些風格等等

但是,它們都將圍繞LngLat(0,0),而不是他們的適當的座標。

你可以在下面看到它們的幾何特性是好的。我不知道我在那裏錯過了什麼。

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

感謝您的幫助。我必須(恥辱地)承認我不知道我使用的是什麼投影:我無法弄清楚這些開放層的大圖:/我正在編寫一個擴展Rails插件的代碼,在Google Map上顯示內容。我想給用戶選擇openlayers的選擇。你可以在這裏找到具體的openlayers代碼:https://github.com/apneadiving/Google-Maps-for-Rails/blob/playground/public/javascripts/gmaps4rails.openlayers.js預先感謝你的專業知識。 – apneadiving

+0

感謝您的幫助,igorti剛剛回答,+1無論如何 – apneadiving

+0

沒有問題,其實我可能提供了相同的代碼片斷昨晚,但我不想做太多的假設。 –