javascript - 使用 Javascript 在 Google map 上的多个标记之间画线

标签 javascript html asp.net google-maps

我正在尝试在 Google map 上的多个标记之间画线。多个标记的绘制是成功的,但是我无法绘制多条线。

我试过下面的代码只画了一条线:

<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false&callback=map_init"></script>
    <script type="text/javascript">
        function InitializeMap() {
            var ltlng = [];

            ltlng.push(new google.maps.LatLng(17.22, 78.28));
            ltlng.push(new google.maps.LatLng(13.5, 79.2));
            ltlng.push(new google.maps.LatLng(15.24, 77.16));

            // var latlng = new google.maps.LatLng(-34.397, 150.644);
            var myOptions = {
                zoom: 8,
                //center: latlng,
                center: ltlng[0],
                mapTypeId: google.maps.MapTypeId.ROADMAP
            };
            var map = new google.maps.Map(document.getElementById("map"), myOptions);

            for (var i = 0; i < ltlng.length; i++) {
                var marker = new google.maps.Marker
                    (
                    {
                        // position: new google.maps.LatLng(-34.397, 150.644),
                        position: ltlng[i],
                        map: map,
                        title: 'Click me'
                    }
                    );
            }
            //***********ROUTING****************//

            //Intialize the Path Array
            var path = new google.maps.MVCArray();

            //Intialize the Direction Service
            var service = new google.maps.DirectionsService();

            //Set the Path Stroke Color
            var poly = new google.maps.Polyline({ map: map, strokeColor: '#4986E7' });
            //Loop and Draw Path Route between the Points on MAP
            for (var i = 0; i < ltlng.length; i++)
            {
                if ((i + 1) < ltlng.length) {
                    var src = ltlng[i];
                    var des = ltlng[i + 1];
                    path.push(src);
                    poly.setPath(path);
                    service.route({
                        origin: src,
                        destination: des,
                        travelMode: google.maps.DirectionsTravelMode.DRIVING
                    }, function (result, status) {
                        if (status == google.maps.DirectionsStatus.OK) {
                            for (var i = 0, len = result.routes[0].overview_path.length; i < len; i++) {
                                path.push(result.routes[0].overview_path[i]);
                            }
                        }
                    });
                }
            }

        }

        window.onload = InitializeMap;

    </script>
    <h2>Creating Your First Google Map Demo:</h2>
    <div id="map" style="width: 800px; top: 68px; left: 172px; position: absolute; height: 500px">
    </div>

map 截图如下: enter image description here

如何在多个点之间画线?

请帮忙

谢谢

最佳答案

Google 有一些 excellent samples available .但基本上您必须跟踪数组中的标记和/或坐标,以便它们可用于线路径或稍后删除。

var map = [];
var markers = [];
var coords = [];

function initMap() {
    //initialze the map here
}

// Adds a marker to the map and push to the array.
function addMarker(location) {
    var marker = new google.maps.Marker({
      position: location,
      map: map
    });

    //push to array
    markers.push(marker);
    coords.push(location);
}

一旦标记在数组中,您就可以使用该数组画一条线。

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

line.setMap(map);

关于javascript - 使用 Javascript 在 Google map 上的多个标记之间画线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51816751/

相关文章:

javascript - AngularJS 提交时验证消息

javascript - 通过 Javascript 运行 HTML

jquery - 单击侧边栏中的元素时防止主窗口滚动

html - 如何在 Safari 中将 flex 容器的绝对定位子项居中?

javascript - 从 URL 构建多维对象

javascript - 使用理解表达式的自定义指令

c# - ASP.net 代码在 C# 背后和背后

c# - 禁用以 EXCEL 格式导出 RDLC 报告

c# - 长时间解析不正确的 JSON 响应 ASP.NET MVC

javascript - 在其中添加额外代码后,删除操作不起作用