2011-07-09 49 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

没有问题,其实我可能提供了相同的代码片断昨晚,但我不想做太多的假设。 –