2012-03-08 30 views

回答

4

我设法显示路线:

KML:将KML坐标为字符串 6.646280,49.753730,0.000000 6.646020,49.753230,0.000000 6.645650,49.752700,0.000000 ... 在这种情况下。

Vector routeLayer = new Vector("route"); 

List<Point> pointList = new ArrayList<Point>(); 
Projection defaultProj = new Projection(DEFAULT_PROJECTION); 
    // DEFAULT_PROJECTION = "EPSG:4326" 
Projection mapProj = new Projection(mapWidget.getMap().getProjection()); 
for (String coord : KML.split(" ")) 
{ 
    String[] xyz = coord.split(","); 
    if (xyz.length == 3) 
    { 
    Point point = new Point(Double.parseDouble(xyz[0]), Double.parseDouble(xyz[1])); 
     // lon,lat 
    point.transform(defaultProj, mapProj); 
    pointList.add(point); 
    } 
} 
LineString geometry = new LineString(pointList.toArray(new Point[pointList.size()])); 
Style style = new Style(); 
style.setStrokeColor("#0033ff"); 
style.setStrokeWidth(5); 

routeLayer.addFeature(new VectorFeature(geometry, style)); 

mapWidget.getMap().addLayer(routeLayer); 
2

取决于您的路径格式,但如果您有KML,请使用GML层。

+0

谢谢,您可能有更多的信息给我吗?将maps.addLayer(新的GML(“路线”,网址)工作,当url返回kml?我使用osm与投影EPSG:900913。我的网址在投影EPSG:4326中返回kml并且它不起作用。改变kml或者你知道一个kml提供者返回投影EPSG:900913 – ZehnVon12 2012-03-08 14:54:36

+0

GWT包装还没有覆盖所有的开放层,所以最好的方法是首先找出如何在开放层JavaSCript中创建一个图层。例如,如果你还不知道如何去做:http://openlayers.org/dev/examples/接下来使用GWT构建它,并注意到,openlayer属性和参数在它们自己的类中的GWT包装中,比如类GMLProperties。如果没有特定属性的命名方法,你可以使用属性名称作为第一个参数的通用方法'setProperty'。 – 2012-03-08 15:08:43

+0

有人可以发布一个小例子,一些代码行吗? – ZehnVon12 2012-03-08 16:41:48