将标记放置在具有特定距离的折线上

Posted

技术标签:

【中文标题】将标记放置在具有特定距离的折线上【英文标题】:place marker on polyline with specific distance 【发布时间】:2013-05-23 04:51:49 【问题描述】:

我使用 google map api v3 制作了一个谷歌地图,并在地图上放置了一条折线,这是我的地图代码

function initialize() 
            var myLatLng = new google.maps.LatLng(31.77577, 72.26588);
            var mapOptions = 
                zoom: 15,
                center: myLatLng,
                mapTypeId: google.maps.MapTypeId.HYBRID
            ;

            var map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);

            var flightPlanCoordinates = [
      new google.maps.LatLng(31.77577, 72.26588),
      new google.maps.LatLng(31.75715, 72.25918),
      new google.maps.LatLng(31.7379, 72.2415),
      new google.maps.LatLng(31.717362, 72.226646),
      new google.maps.LatLng(31.720063, 72.216905),
      new google.maps.LatLng(31.714514, 72.206905),
      new google.maps.LatLng(31.7086, 72.186735),
      new google.maps.LatLng(31.702685, 72.177294)

  ];
            var flightPath = new google.maps.Polyline(
                path: flightPlanCoordinates,
                strokeColor: '#FF0000',
                strokeOpacity: 1.0,
                strokeWeight: 2
            );

            flightPath.setMap(map);
        

        google.maps.event.addDomListener(window, 'load', initialize);

现在我想在这条折线上每 1 公里放置一个标记。请任何人帮助将标记放置在折线上 1 公里处。

【问题讨论】:

example with markers every 2 km,使用 Mike Williams 的 epoly 库的移植版本,可能也可以使用 Google Maps API v3 几何库。 【参考方案1】:

这对我有用(添加到初始化函数的末尾):

var i=1;
var length = google.maps.geometry.spherical.computeLength(flightPath.getPath());
var remainingDist = length;

while (remainingDist > 0)

   createMarker(map, flightPath.GetPointAtDistance(1000*i),i+" km");
   remainingDist -= 1000;
   i++;

// put markers at the ends
createMarker(map,flightPath.getPath().getAt(0),length/1000+" km");
createMarker(map,flightPath.getPath().getAt(flightPath.getPath().getLength()-1),(length/1000).toFixed(2)+" km");
flightPath.setMap(map);


function createMarker(map, latlng, title)
    var marker = new google.maps.Marker(
          position:latlng,
          map:map,
          title: title
          );

example

【讨论】:

以上是关于将标记放置在具有特定距离的折线上的主要内容,如果未能解决你的问题,请参考以下文章

如何根据沿线的距离在谷歌地图折线上添加标记?

如何在现有折线上计算 LatLng A 到 LatLng B?

使折线捕捉到传单中的道路

R - 计算沿折线两点之间的距离

地图标记放置在距离相应坐标较远的地方

根据距当前位置的距离(米)和方位在地图上放置注释