Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.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 谷歌地图v3距离_Google Maps_Distance_Calculator - Fatal编程技术网

Google maps 谷歌地图v3距离

Google maps 谷歌地图v3距离,google-maps,distance,calculator,Google Maps,Distance,Calculator,尝试创建新版本的映射函数,如下所示: 但是使用v3api 到目前为止,我可以在单击时设置标记,并可以绘制测地线多段线。 我目前遇到的问题有: 拖动标记时更新多边形线 我非常确定我必须把每个标记放在一个数组中,并为它们做一个标记 循环,以便我可以继续单击并添加将添加到 总距离 正确显示距离 我创建了一个JSFIDLE: 编辑:我意识到我没有调用“更新”功能。我目前正在尝试为每个标记创建数组。您看到的计算是将米转换为海里。我不久前写了这样一篇文章作为练习。不幸的是,它只能在Chrome中正常工作

尝试创建新版本的映射函数,如下所示: 但是使用v3api

到目前为止,我可以在单击时设置标记,并可以绘制测地线多段线。 我目前遇到的问题有:

  • 拖动标记时更新多边形线
  • 我非常确定我必须把每个标记放在一个数组中,并为它们做一个标记 循环,以便我可以继续单击并添加将添加到 总距离
  • 正确显示距离
我创建了一个JSFIDLE:


编辑:我意识到我没有调用“更新”功能。我目前正在尝试为每个标记创建数组。您看到的计算是将米转换为海里。

我不久前写了这样一篇文章作为练习。不幸的是,它只能在Chrome中正常工作,在其他浏览器中也有奇怪的bug。距离函数应该在IE9中起作用

我的想法是将
侦听器添加到标记中,并保留一条表示路径的多段线,在拖动标记时更新其路径

演示

google.maps.event.addListener(tmpNode,'drag',函数(event){
distance.drawPath();
});
distance.drawPath=函数(){
距离。countNodes();
var-coords=[];
对于(var i=0;i=0;i--){
if(distance.nodes[i].getMap()==null){
节点拼接距离(i,1);
}
否则{
计数++;
}
}
返回计数;
}
distance.clearNodes=函数(){
对于(var i=0;i
谢谢您的帮助。我可能没有提到我在js有点不在行。不像大多数人那样粗鲁。我正在寻找脚本的具体帮助,使用我已经在链接到的js FIDLE中使用的变量。我明白了你向我展示的概念,我现在正试图找出如何在我的项目中实施。
      google.maps.event.addListener(tmpNode, 'drag', function(event) {
        distance.drawPath();
      });


    distance.drawPath = function() {
      distance.countNodes();
      var coords = [];
      for (var i = 0; i < distance.nodes.length; i++) {
        coords.push(distance.nodes[i].getPosition());
      }
      distance.line.setPath(coords);

      meters = google.maps.geometry.spherical.computeLength(coords);
      $("#distance_km").val((meters/1000).toFixed(3));
      $("#distance_mi").val((meters/1609.344).toFixed(3));
    }

    distance.countNodes = function() {
      var count = 0;
      for (var i = distance.nodes.length - 1; i >= 0; i--) {
        if (distance.nodes[i].getMap() == null) {
          distance.nodes.splice(i, 1);
        }
        else {
          count++;
        }
      }
      return count;
    }

    distance.clearNodes = function() {
      for(var i = 0; i < distance.nodes.length; i++) {
        distance.nodes[i].setMap(null);
      }
      distance.drawPath();
    }