0

我有一个转换为 GeoJSON 的 GPX Track(起点 == 终点)。
我现在想在地图上显示这条轨道,其中仅由 trac 封闭的地图显示。其余的应该是白色的。

到目前为止,我有以下内容:

<script type="text/javascript">
  function init() {
    map = new OpenLayers.Map("basicMap");
    var mapnik         = new OpenLayers.Layer.OSM();

    var fromProjection = new OpenLayers.Projection("EPSG:4326");
    var toProjection   = new OpenLayers.Projection("EPSG:900913");
    var position       = new OpenLayers.LonLat(13.41,52.52).transform( fromProjection, toProjection);
    var zoom           = 7; 

    map.addLayer(mapnik);
    map.setCenter(position, zoom );

    geojson_layer = new OpenLayers.Layer.Vector("GeoJSON", {
        strategies: [new OpenLayers.Strategy.Fixed()],
        protocol: new OpenLayers.Protocol.HTTP({
            url: "tracks.json",
            format: new OpenLayers.Format.GeoJSON()
        })
    });

    map.addLayer(geojson_layer);
  }
</script>

track.json 是带有 trac 的 GeoJSON 文件。

基本上现在我想要一个围绕轨迹的矩形。trac 和 rectangle 之间的空间应该填充为白色。

谢谢您的帮助!

4

1 回答 1

0

实际上它就像用两个坐标对象声明一个多边形一样简单。一个用于矩形,一个用于轨道:

var border = { 
"type": "Feature", 
"properties": { }, 
"geometry": { 
    "type": "Polygon", 
    "coordinates": [ 

        [
            [    
                Coordinates of Rectangle
            ]
        ],
        [
            [
                Coordinates of the track
            ]
        ]
    ]
  }
}

我在我的javascript中包含了这个:

 <script type="text/javascript" src="border.js"></script>
 .
 .
 var geojson_format  = new OpenLayers.Format.GeoJSON({
            'internalProjection': toProjection,
            'externalProjection': fromProjection
 });

 map.addLayer(vectorLayer);
 vectorLayer.addFeatures(geojson_format.read(border));
于 2012-12-05T11:12:51.737 回答