【问题标题】:Google Maps API: Bézier curve polyline wrapGoogle Maps API:贝塞尔曲线折线包裹
【发布时间】:2014-10-21 04:53:54
【问题描述】:

通过使用贝塞尔曲线折线绘制功能provided by nicoabie,我能够从地图上的一个点到另一个点绘制一条曲线。问题是这个函数没有考虑到当一个点超过最大坐标标记时,它不一定在地图的另一边,因为它会环绕。

例如,画一条从西雅图到东京的曲线。一条规则的折线将穿过太平洋,但曲线向东绘制整个地球。

geodesic: true 在这种情况下不起作用,因为线条必须具有一致的曲率。

我的问题是:是否可以绘制一条考虑到地图环绕的一致曲线?

【问题讨论】:

标签: javascript google-maps google-maps-api-3 drawing maps


【解决方案1】:

使用google.maps.LatLng class 的选项第三个“nowrap”参数强制所有相关点具有相同的符号(将其设置为true,默认为false)。

gmarkers[10].setPosition(new google.maps.LatLng(35.689488,139.69170)); // Tokyo
gmarkers[0].setPosition(new google.maps.LatLng(47.60621,(360-122.332071),true)); // Seattle
boundsCenter.setPosition(new google.maps.LatLng(36.096756,(360-178.986565),true)); // control point 1
gmarkers[6].setPosition(new google.maps.LatLng(48.511996,180)); // control point 2

var curvedLine = new GmapsCubicBezier(gmarkers[0].getPosition().lat(), gmarkers[0].getPosition().lng(), boundsCenter.getPosition().lat(), boundsCenter.getPosition().lng(), gmarkers[6].getPosition().lat(), gmarkers[6].getPosition().lng(), gmarkers[10].getPosition().lat(), gmarkers[10].getPosition().lng(), 0.01, map);

working fiddle

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-10
    • 1970-01-01
    • 2013-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多