Javascript 如何用曲线连接谷歌地图中的点?

Javascript 如何用曲线连接谷歌地图中的点?,javascript,google-maps,google-maps-api-3,Javascript,Google Maps,Google Maps Api 3,有人能帮我在谷歌地图上用圆弧、抛物线或任何曲线连接指定点吗?它目前与一条直线相连。我尝试过使用另一个堆栈溢出问题,但这些代码只连接两个点,我可能在未来有多个标记,所以我需要一些可以反复恢复的东西。。。请看下面的代码 <!DOCTYPE html> <html> <head> <script src="http://maps.googleapis.com/maps/api/js"></script> <script> var

有人能帮我在谷歌地图上用圆弧、抛物线或任何曲线连接指定点吗?它目前与一条直线相连。我尝试过使用另一个堆栈溢出问题,但这些代码只连接两个点,我可能在未来有多个标记,所以我需要一些可以反复恢复的东西。。。请看下面的代码

<!DOCTYPE html>
<html>
<head>
<script src="http://maps.googleapis.com/maps/api/js"></script>

<script>
var x=new google.maps.LatLng(14.560774500000008,121.02631410000006);

var rcbc=new google.maps.LatLng(14.560648, 121.016781);
var powerplant=new google.maps.LatLng(14.565066, 121.036184);

var trafalgar=new google.maps.LatLng(14.560774500000008,121.02631410000006);
var mapua=new google.maps.LatLng(14.562883, 121.022039);

function initialize()
{
var mapProp = {
center:x,
zoom:15,
mapTypeId:google.maps.MapTypeId.ROADMAP
};  

var map=new google.maps.Map(document.getElementById("googleMap"),mapProp);

var myTrip=[trafalgar,rcbc];
var myTrip2=[rcbc,powerplant];

var flightPath2=new google.maps.Polyline({
path:myTrip2,
strokeColor:"##35495e",
strokeOpacity:0.8,
strokeWeight:3
});

var flightPath=new google.maps.Polyline({
path:myTrip,
strokeColor:"##35495e",
strokeOpacity:0.8,
strokeWeight:3
});

var marker=new google.maps.Marker({
position:x,
});

var marker2=new google.maps.Marker({
position:london,
});

var marker3=new google.maps.Marker({
position:rcbc,
});

var marker4=new google.maps.Marker({
position:powerplant,
});

marker4.setMap(map);
marker3.setMap(map);
marker2.setMap(map);
marker.setMap(map);
flightPath.setMap(map);
flightPath2.setMap(map);
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>

<body>
<div id="googleMap" style="width:1000px;height:680px;"></div>
</body>
</html>

var x=新的google.maps.LatLng(14.560774500000008121.02631410000006);
var rcbc=new google.maps.LatLng(14.560648121.016781);
var powerplant=new google.maps.LatLng(14.565066121.036184);
var trafalgar=new google.maps.LatLng(14.560774500000008121.02631410000006);
var mapua=new google.maps.LatLng(14.562883121.022039);
函数初始化()
{
var mapProp={
中心:x,
缩放:15,
mapTypeId:google.maps.mapTypeId.ROADMAP
};  
var map=new google.maps.map(document.getElementById(“googleMap”),mapProp);
var myTrip=[trafalgar,rcbc];
var myTrip2=[rcbc,发电厂];
var flightPath2=新的google.maps.Polyline({
路径:myTrip2,
strokeColor:#35495e“,
笔划不透明度:0.8,
冲程重量:3
});
var flightPath=new google.maps.Polyline({
路径:myTrip,
strokeColor:#35495e“,
笔划不透明度:0.8,
冲程重量:3
});
var marker=new google.maps.marker({
位置:x,
});
var marker2=新的google.maps.Marker({
职位:伦敦,
});
var marker3=新的google.maps.Marker({
职位:rcbc,
});
var marker4=新的google.maps.Marker({
位置:动力装置,
});
marker4.setMap(map);
marker3.setMap(map);
marker2.setMap(map);
marker.setMap(map);
flightPath.setMap(map);
flightPath2.setMap(map);
}
google.maps.event.addDomListener(窗口“加载”,初始化);

加载Google Maps JS时,请指定几何体库:

<script src="http://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
如果为true,多边形的边将被解释为测地线,并将 跟随地球的曲率。如果为假,多边形的边 在屏幕空间中渲染为直线。”

请参阅谷歌的示例和文档:


加载Google Maps JS时,请指定几何体库:

<script src="http://maps.googleapis.com/maps/api/js?libraries=geometry"></script>
如果为true,多边形的边将被解释为测地线,并将 跟随地球的曲率。如果为假,多边形的边 在屏幕空间中渲染为直线。”

请参阅谷歌的示例和文档:


    • 一个选项是使用这个相关问题的代码:(贝塞尔曲线)

      代码片段:

      函数绘制曲线(P1、P2、map){
      var lineLength=google.maps.geometry.spheremic.ComputedDistanceBeween(P1,P2);
      var lineHeading=google.maps.geometry.spheremic.computeHeading(P1,P2);
      如果(行标题<0){
      var lineHeading1=行标题+45;
      var lineHeading2=行标题+135;
      }否则{
      var lineHeading1=lineHeading+-45;
      var lineHeading2=lineHeading+-135;
      }
      var pA=google.maps.geometry.sphereal.computeOffset(P1,lineLength/2.2,lineHeading1);
      var pB=google.maps.geometry.sphereal.computeOffset(P2,lineLength/2.2,lineHeading2);
      var curvedLine=新的GMapCubicBezier(P1,pA,pB,P2,0.01,map);
      }
      var x=新的google.maps.LatLng(14.560774500000008121.02631410000006);
      var london=new google.maps.LatLng(51.5073509,-0.127758299998223);
      var rcbc=new google.maps.LatLng(14.560648121.016781);
      var powerplant=new google.maps.LatLng(14.565066121.036184);
      var trafalgar=new google.maps.LatLng(14.560774500000008121.02631410000006);
      var mapua=new google.maps.LatLng(14.562883121.022039);
      函数初始化(){
      var mapProp={
      中心:x,
      缩放:15,
      mapTypeId:google.maps.mapTypeId.ROADMAP
      };
      var map=new google.maps.map(document.getElementById(“googleMap”),mapProp);
      var myTrip=[trafalgar,rcbc];
      var myTrip2=[rcbc,发电厂];
      绘制曲线(特拉法加、rcbc、地图);
      绘制曲线(rcbc、发电厂、地图);
      var marker=new google.maps.marker({
      位置:x,
      });
      var marker2=新的google.maps.Marker({
      职位:伦敦,
      });
      var marker3=新的google.maps.Marker({
      职位:rcbc,
      });
      var marker4=新的google.maps.Marker({
      位置:动力装置,
      });
      marker4.setMap(map);
      marker3.setMap(map);
      marker2.setMap(map);
      marker.setMap(map);
      flightPath.setMap(map);
      flightPath2.setMap(map);
      }
      google.maps.event.addDomListener(窗口“加载”,初始化);
      //nicoabie对StackOverflow问题的回答中的原始Belzier曲线代码:
      // https://stackoverflow.com/questions/5347984/letting-users-draw-curved-lines-on-a-google-map
      var GmapsCubicBezier=函数(latlong1、latlong2、latlong3、latlong4、分辨率、映射){
      var lat1=latlong1.lat();
      var long1=latlong1.lng();
      var lat2=latlong2.lat();
      var long2=latlong2.lng();
      var lat3=latlong3.lat();
      var long3=latlong3.lng();
      var lat4=latlong4.lat();
      var long4=latlong4.lng();
      var点=[];
      
      对于(it=0;it一个选项是使用这个相关问题的代码:(贝塞尔曲线)

      代码片段:

      函数绘制曲线(P1、P2、map){
      var lineLength=google.maps.geometry.spheremic.ComputedDistanceBeween(P1,P2);
      var lineHeading=google.maps.geometry.spheremic.computeHeading(P1,P2);
      如果(行标题<0){
      var lineHeading1=行标题+45;
      var lineHeading2=行标题+135;
      }否则{
      var lineHeading1=lineHeading+-45;
      var lineHeading2=lineHeading+-135;
      }
      var pA=google.maps.geometry.sphereal.computeOffset(P1,lineLength/2.2,lineHeading1);
      var pB=google.maps.geometry.sphereal.computeOffset(P2,lineLength/2.2,lineHeading2);
      var curvedLine=新的GMapCubicBezier(P1,pA,pB,P2,0.01,map);
      }
      var x=新的google.maps.LatLng(14.560774500000008121.02631410000006);
      var london=new google.maps.LatLng(51.5073509,-0.127758299998223);
      var rcbc=new google.maps.LatLng(14.56