1

在我的谷歌地图程序中,我有一个简单的 KML 解析器,它只检索坐标并为它们在地图上创建折线,另外在每个点中创建标记,稍后用于编辑线。较长的路线地图会因过多的标记而挂起。我明白了,也许你只能在曲线超过 10 度时创建标记?现在我有if它只每两点筛选一次,但这是一个弱点子。

解包数组的说明性:

for (var i=0;i<coords.length;i++) { 
    if(i!=0&&i!=coords.length-1){
        var prevpt = new google.maps.LatLng(coords[i-1].lat, coords[i-1].lng);
        var pivot = new google.maps.LatLng(coords[i].lat, coords[i].lng);
        var nextpt = new google.maps.LatLng(coords[i+1].lat, coords[i+1].lng);

        var marker = createMarker(pivot);
        polyMarkers.push(marker);
        var path = polyLine.getPath();
        path.push(pivot);
    }
}

如何计算下一个超过10度?

也许你对如何优化它有一些其他的想法?

4

1 回答 1

2

看来您需要折线简化 - Douglas-Peucker algorithm这是另一个实现的描述

于 2012-04-06T11:02:22.183 回答