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,多边形的边将被解释为测地线,并将
跟随地球的曲率。如果为假,多边形的边
在屏幕空间中渲染为直线。”
请参阅谷歌的示例和文档:
<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