如何转换GWT OpenLayers VectorFeature?

时间:2012-10-27 14:36:35

标签: gwt transform openlayers projection gwt-openlayers

我正在使用OpenLayers GWT。我想在Google Maps图层上放置一个GeoJSON形状。我做了如下:

String gson = "{here I put a valid GeoJSON string}";
GeoJSON geoJSON = new GeoJSON();
VectorFeature[] vf = geoJSON.read(gson);
myShapeLayer.addFeature(vf[0]);

形状显示在地图上,但不是正确的位置。我想我必须将Vector转换为EPSG:900913,但我不知道如何使用VectorFeature。没有可以使用的转换功能。 如何将转换应用于GWT VectorFeature?

这个问题没有得到答复。我想更好地解释一下我想知道的事情:

在javascript Openlayers中,你可以这样做:

var projWGS84 = new OpenLayers.Projection("EPSG:4326");
var proj900913 = new OpenLayers.Projection("EPSG:900913");

feature.geometry.transform(projWGS84, proj900913);

如何在GWL版本的OpenLayers中做同样的事情?

提前致谢。

1 个答案:

答案 0 :(得分:1)

OpenLayers-GWT缺少将采用options参数的GeoJSON构造函数,这必须在OpenLayers-GWT源中添加。同时,这已被添加到KML Vector类中。所以现在你可以这样做:

String kmlString = "{<string with KML>}";
FormatOptions formatOptions = new FormatOptions();
formatOptions.setInternalProjection(new Projection("EPSG:900913"));
formatOptions.setExternalProjection(new Projection("EPSG:4326"));
KML kml = new KML(formatOptions);

VectorFeature[] vf = KML.read(kmlString);
myShapeLayer.addFeature(vf[0]);

以同样的方式将它添加到GeoJSON类中以使转换起作用。