Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google maps api 3 从多段线开始的板条百分比_Google Maps Api 3 - Fatal编程技术网

Google maps api 3 从多段线开始的板条百分比

Google maps api 3 从多段线开始的板条百分比,google-maps-api-3,Google Maps Api 3,如何从沿多段线的给定百分比返回latLng值? 我花了一天的时间使用插值和单个节点。它们是否是一个更简单的函数来执行咕噜工作 谷歌地图API v3 谢谢 为GoogleMapsJavaScriptAPIv2编写,移植到v3 有以下两种方法: .Distance()返回多边形路径的长度 .GetPointAtDistance()返回指定距离处的GLatLng 沿着小路。 距离以米为单位指定 如果路径短于此值,则返回null 这应该是可行的(如果您包括该脚本,并且您的polyline变量为“p

如何从沿多段线的给定百分比返回latLng值? 我花了一天的时间使用插值和单个节点。它们是否是一个更简单的函数来执行咕噜工作

谷歌地图API v3 谢谢

为GoogleMapsJavaScriptAPIv2编写,移植到v3

有以下两种方法:

  • .Distance()返回多边形路径的长度
  • .GetPointAtDistance()返回指定距离处的GLatLng
    沿着小路。
    距离以米为单位指定
    如果路径短于此值,则返回null
这应该是可行的(如果您包括该脚本,并且您的polyline变量为“polyline”):

当然,如果多段线的长度没有变化,则在每次要在多段线上查找点时使用该多段线计算长度会更有效

var polylength = polyline.Distance();
var latlng = polylength*(desired percentage)/100);

代码片段:

var方向显示;
var directionsService=new google.maps.directionsService();
var映射;
var polyline=null;
var标记;
var信息窗口;
函数createMarker(板条、标签、html){
//警报(“createMarker”(“+latlng+”、“+label+”、“+html+”、“+color+”));
var contentString=''+label+'
'+html; var marker=new google.maps.marker({ 位置:latlng, 地图:地图, 标题:标签, zIndex:Math.round(latlng.lat()*-100000)100){ 百分比=100; document.getElementById('percent')。value=percent; } 变量距离=百分比/100*总距离*1000; //时间=(百分比/100)*总时间/60.toFixed(2); //警报(“时间:“+Time+”totalTime:“+totalTime+”totalDist:“+totalDist+”dist:”+距离); 如果(!标记){ marker=createMarker(polyline.GetPointAtDistance(距离),“百分比:”+percent,“标记”); }否则{ marker.setPosition(折线.GetPointAtDistance(距离)); marker.setTitle(“百分比:”+百分比); marker.contentString=“percent:”+percent+“
距离:”+(距离/1000).toFixed(2)+“km
标记”; google.maps.event.trigger(标记“click”); } } google.maps.event.addDomListener(窗口“加载”,初始化); //来自epoly_v3.js //修改为对线段长度使用几何图形库 //==返回沿路径给定距离的点的GLatLng的方法=== //==如果路径短于指定距离,则返回null=== google.maps.Polyline.prototype.GetPointAtDistance=函数(米){ //一些棘手的特殊情况 if(meters==0)返回此.getPath().getAt(0); 如果(米<0)返回空值; if(this.getPath().getLength()<2)返回null; var-dist=0; var-olddist=0; 对于(var i=1; (i
html{
身高:100%
}
身体{
身高:100%;
边际:0px;
填充:0px
}

开始:
完:

百分比: 总时间:
var polylength = polyline.Distance();
var latlng = polylength*(desired percentage)/100);