fxc*_*xck 3 javascript google-maps google-maps-api-3 google-polyline
我有一个折线列表,就像谷歌地图一样,当我点击折线时我想要一个信息窗口显示我点击的位置,它可以很好地使用这个功能
function mapsInfoWindow(polyline, content) {
google.maps.event.addListener(polyline, 'click', function(event) {
infowindow.content = content;
infowindow.position = event.latLng;
infowindow.open(map);
});
}
Run Code Online (Sandbox Code Playgroud)
问题来自于我点击列表(使用相同的功能),事件显然没有latLng,但我想infowindow无论如何都要显示在折线的中间,就像你做的那样点击我之前提到的谷歌地图链接中的列表.
试过LatLngBounds(); 但是这给了折线创建的区域的实际中心,而不是我需要的中间区域.
知道怎么做吗?
所以这是(有点hacky)解决方案.
使用http://www.geocodezip.com/scripts/v3_epoly.js库,然后计算折线的总长度(各种方式),将其除以一半并调用epoly的.GetPointsAtDistance()函数.
这应该返回LatLng点,但它有时会有点怪异,返回两点甚至以某种方式"破坏"该点.所以你可以做的最安全的事情可能就是:
var pointInHalf = polyline.GetPointsAtDistance(polylineLength);
var pointCoordinate = new google.maps.LatLng(pointInHalf[0].lat(), pointInHalf[0].lng());
Run Code Online (Sandbox Code Playgroud)
好吧,总比没有好.
| 归档时间: |
|
| 查看次数: |
12864 次 |
| 最近记录: |