Google maps google map api v3国际日期线多段线上的中心点

Google maps google map api v3国际日期线多段线上的中心点,google-maps,google-maps-api-3,Google Maps,Google Maps Api 3,我在回答我自己的问题(希望对你有利),但问题是: 我已经创建了一个带有多段线的世界地图(在谷歌地图API v3中)。其中一些行跨越IDL(国际日期行)。我想在我的一些线条上放置方向箭头,每条线条的中心有一个箭头。在跨IDL的直线上,通过将两个端点平均起来计算箭头中心: (latlng1.lat()+latlng2.lat()/2),(latlng1.lng()+latlng2.lng()/2) 在世界各地以相反的方式绘制线,在我的地图上留下一个浮动箭头,而不是在实际线的中心 我最初寻求一个公式,

我在回答我自己的问题(希望对你有利),但问题是:

我已经创建了一个带有多段线的世界地图(在谷歌地图API v3中)。其中一些行跨越IDL(国际日期行)。我想在我的一些线条上放置方向箭头,每条线条的中心有一个箭头。在跨IDL的直线上,通过将两个端点平均起来计算箭头中心: (latlng1.lat()+latlng2.lat()/2),(latlng1.lng()+latlng2.lng()/2) 在世界各地以相反的方式绘制线,在我的地图上留下一个浮动箭头,而不是在实际线的中心

我最初寻求一个公式,以得到直线的倒数,并以某种方式确定使用哪一个。但是它太依赖于地图的显示。我甚至想看看,如果我首先将直线的端点转换为像素,是否可以从端点得到中心,但数据转换对结果没有影响

因此,我想在多段线上寻找一种求交方法,传递一个要检查的点——如果不是,则从反向线(我认为是180 center.lng())找到中心点,但在多段线上没有求交方法。所以我开始研究bounds对象,因为在bounds上有一些交集/包含方法

对于一个相对未记录的问题,这里有一个非常简单的解决方案:

(检索边界的函数归功于Te Ben Appleton):


然后,我可以将我的中心点传递给我的标记创建工具,以在直线的实际中心生成箭头,而不必担心它是以何种方式绘制的。

国际日期线没有什么特别之处。你想到的是反子午线。(经度180)国际日期线没什么特别的。你想到的是反子午线。(经度180)
function getBoundsForPoly(poly) {
  var bounds = new google.maps.LatLngBounds;
  poly.getPath().forEach(function(latLng) {
  bounds.extend(latLng);
  });
  return bounds;
}

var poly_bounds = MapAbstraction.get_poly_bounds(line);
var center_point =poly_bounds.getCenter();