0

我正在使用 osm 开发路径创建器。添加线条效果很好,但是当制作一条很长的线条并放大它时,线条会以高缩放级别消失。如果视口远离线的起点和/或终点,似乎会出现这种情况。也许拆分线可能会有所帮助,但是最大尺寸是多少?

这是一个缩小的代码示例,如果您放大到 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很陌生,所以也许我只是搞砸了一些东西..有什么想法吗?提前致谢

4

1 回答 1

0

我正在玩萤火虫并浏览 svg 元素。原来 osm 使用 svg polyline 来制作线条。该行的值空间不足,值超过 15000,这对于那里的渲染器来说太多了。

我检查了关于这个问题的错误报告: https ://github.com/openlayers/openlayers/issues/617

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

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

于 2012-08-06T11:42:46.970 回答