2011-09-21 216 views
1

我设法通过扩展getBounds方法居中多边形路径内的标志:标记在多边形路径

//polyline 
google.maps.Polyline.prototype.getBounds = function() { 
    var bounds = new google.maps.LatLngBounds(); 
    this.getPath().forEach(function(e) { 
     bounds.extend(e); 
    }); 
    return bounds; 
}; 

所有我需要做的是这样的:

var marker = new google.maps.Marker({ 
    map: map, 
    position: flight_path.getBounds().getCenter() 
}); 

现在我想的标志达到10%,25%或95%的路径。
我怎样才能做到这一点?

回答

2

可以使用Geometry library工作了这一点。将Google地图JS网址添加libraries=geometry

然后使用插值函数来工作,你将沿折线多大比例的标记。

var inBetween = google.maps.geometry.spherical.interpolate(startLatlng, endLatLng, 0.5); // 50% 

这是一个折线简单,但如果你有多个线条形成一个路径,它可能是一个有点麻烦!那么也许你可以使用computeLength来计算总路径长度,做数学自己对其中95%的是什么,然后我不知道......

+0

将这项工作为测地折线呢? – andufo

+0

是的,事实上,因为它使用.spherical。类,它是专为测地线 – duncan

+0

哇...这工作真的很好。谢谢! – andufo