【问题标题】:Angularjs google maps API drawing polylineAngularjs谷歌地图API绘制折线
【发布时间】:2023-04-06 04:04:01
【问题描述】:

下面的代码 sn-p 给我输出(基本上每次点击都会添加一个新标记,我正在获取它的 lat 和 long 值):

0: Latitude: 40.207196906764054 Longitude: -99.68994140625
1: Latitude: 40.202477129519124 Longitude: -99.60823059082031

代码sn-p:

$scope.map.markers.push(marker);
// console.log($scope.map.markers);

for (var item in $scope.map.markers) {
  console.log(item +': '+ "Latitude: " +    $scope.map.markers[item].coords.latitude + " " + "Longitude: " + $scope.map.markers[item].coords.longitude);
}

要绘制折线,我需要这种格式的数组:

var flightPlanCoordinates = [
{lat: 37.772, lng: -122.214},
{lat: 21.291, lng: -157.821},
{lat: -18.142, lng: 178.431},
{lat: -27.467, lng: 153.027}
];

我基本上想沿着这些标记画线。如何在我的 for 循环中构造这样一个结构来添加这些纬度和经度值,我可以将它们提供给 Polilines 的“路径”变量?

【问题讨论】:

  • for (var item in $scope.map.markers) { 循环是否适合您?它会打印它应该打印的坐标吗?或者你也需要这部分的帮助?
  • 是的,它给我的输出如第一个屏幕截图所示,每次点击时列表都会不断增加

标签: angularjs google-maps google-maps-api-3 angular-google-maps


【解决方案1】:

您应该能够遍历标记并将它们的坐标添加到一个空数组中(前提是您显示的 for 循环有效):

var myCoordinates = [];
for (var item in $scope.map.markers) {
     myCoordinates.push({lat: $scope.map.markers[item].coords.latitude, lng: $scope.map.markers[item].coords.longitude});
}

然后使用 myCoordinates 数组,就像使用 flightPlanCoordinates 创建折线一样,例如:

var myPolyline = new google.maps.Polyline({
    path: myCoordinates,
    geodesic: true,
    strokeColor: '#FF0000',
    strokeOpacity: 1.0,
    strokeWeight: 2,
    map: map
});

【讨论】:

  • 完美运行!谢谢!还有一个问题,如果答案很大,我可以将它作为一个单独的问题发布:在这种特殊情况下,是否有可能使用我编写的任何代码加入让我们说三个或一些特定数量的标记来形成一个多边形和相应的区域可以计算吗?
  • Polygon 也是一个简单的解决方案,只是参考了官方文档。效果很好。
猜你喜欢
  • 2013-07-02
  • 2013-05-30
  • 2016-05-14
  • 1970-01-01
  • 2018-03-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多