打开街道地图长线在高缩放级别消失

时间:2012-08-05 13:18:39

标签: javascript openlayers openstreetmap

我正在使用osm处理一个pathcreator。添加线条可以很好地工作,但是当一条线条很长并且放大它时,线条会以高缩放级别消失。如果视口远离线的起点和/或终点,似乎会出现这种情况。也许拆分线可能会有所帮助,但这是最大尺寸?

这是一个缩小的代码示例,如果放大到第7级,则该行消失:

    $(document).ready(function() {    
            var map = new OpenLayers.Map('map');

            var mapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
            map.addLayer(mapnik);

            var path = new OpenLayers.Layer.Vector("path");
            map.addLayer(path);  

            var pathStyle = {
                    strokeColor: "#0033ff",
                    strokeOpacity: 0.7,
                    strokeWidth: 5
            };

            var points = new Array(
                    new OpenLayers.Geometry.Point(-7856503.5146562, 880554.5664875),
                    new OpenLayers.Geometry.Point(8502243.5278938, 724011.5325875)
            );

            var line = new OpenLayers.Geometry.LineString(points);

            var lineFeature = new OpenLayers.Feature.Vector(line, null, pathStyle);
            path.addFeatures([lineFeature]);

            map.zoomToExtent(path.getDataExtent());
    });

我对osm很新,所以也许我只是弄乱了什么......有什么想法吗?提前致谢

1 个答案:

答案 0 :(得分:0)

我正在玩萤火虫并穿过svg元素。事实证明,osm使用svg折线来制作线条。该行的值超出空间,值超过15000,这对于渲染器来说是很多。

我查看了有关此问题的错误报告: https://github.com/openlayers/openlayers/issues/617

我目前的解决方法是将线路分成100公里的和平线。这可行,但需要更多的计算。

如果某人有人在这里是一个有用的数学网站: http://www.movable-type.co.uk/scripts/latlong.html