gpt4 book ai didi

javascript - 谷歌地图替代道路以不同颜色显示

转载 作者:行者123 更新时间:2023-12-02 15:37:25 27 4
gpt4 key购买 nike

我有以下谷歌地图JsFiddle - 我需要在 2 个位置之间显示多个选项 - 我只显示一条路线 - 如果可能的话还需要 2 个以不同的颜色绘制。

在我得到的文档中,我并没有明确要解决的问题。

$(document).ready(function(){

var markers = [

{
"title": '',
"lat": '56.965969',
"lng": '24.143496',
"description": ''
}

,

{
"title": '',
"lat": '56.966259',
"lng": '24.385860',
"description": ''
}];

var mapOptions = {
zoom: 11,
center: new google.maps.LatLng(56.975749, 24.279310),
scrollwheel: false,
navigationControl: false,
mapTypeControl: false,
scaleControl: false,
draggable: false,
styles: [
{
"featureType": "water",
"elementType": "geometry",
"stylers": [
{
"color": "#d3d3d3"
},
{
"lightness": 17
}]
},
{
"featureType": "landscape",
"elementType": "geometry",
"stylers": [
{
"color": "#f5f5f5"
},
{
"lightness": 20
}]
},
{
"featureType": "road.highway",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#ffffff"
},
{
"lightness": 17
}]
},
{
"featureType": "road.highway",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#ffffff"
},
{
"lightness": 29
},
{
"weight": 0.2
}]
},
{
"featureType": "road.arterial",
"elementType": "geometry",
"stylers": [
{
"color": "#ffffff"
},
{
"lightness": 18
}]
},
{
"featureType": "road.local",
"elementType": "geometry",
"stylers": [
{
"color": "#ffffff"
},
{
"lightness": 16
}]
},
{
"featureType": "poi",
"elementType": "geometry",
"stylers": [
{
"color": "#f5f5f5"
},
{
"lightness": 21
}]
},
{
"featureType": "poi.park",
"elementType": "geometry",
"stylers": [
{
"color": "#dedede"
},
{
"lightness": 21
}]
},
{
"elementType": "labels.text.stroke",
"stylers": [
{
"visibility": "on"
},
{
"color": "#ffffff"
},
{
"lightness": 16
}]
},
{
"elementType": "labels.text.fill",
"stylers": [
{
"saturation": 36
},
{
"color": "#333333"
},
{
"lightness": 40
}]
},
{
"elementType": "labels.icon",
"stylers": [
{
"visibility": "off"
}]
},
{
"featureType": "transit",
"elementType": "geometry",
"stylers": [
{
"color": "#f2f2f2"
},
{
"lightness": 19
}]
},
{
"featureType": "administrative",
"elementType": "geometry.fill",
"stylers": [
{
"color": "#fefefe"
},
{
"lightness": 20
}]
},
{
"featureType": "administrative",
"elementType": "geometry.stroke",
"stylers": [
{
"color": "#fefefe"
},
{
"lightness": 17
},
{
"weight": 1.2
}]
}]
};

var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();

var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map_1"), mapOptions);
var poly = new google.maps.Polyline(
{
map: map,
strokeColor: '#a4c431',
strokeOpacity: 1.0,
strokeWeight: 5
});

var lat_lng = new Array();

var image = 'images/sillava-pin.png';
var marker = new google.maps.Marker(
{
position: new google.maps.LatLng(56.966259, 24.385860),
map: map,
title: 'Sillava',
icon: image
});
for (i = 0; i < markers.length; i++)
{
var data = markers[i]
var myLatlng = new google.maps.LatLng(data.lat, data.lng);
lat_lng.push(myLatlng);

}

for (var i = 0; i < lat_lng.length; i++)
{
if ((i + 1) < lat_lng.length)
{
var src = lat_lng[i];
var des = lat_lng[i + 1];
path.push(src);
poly.setPath(path);
service.route(
{
origin: src,
destination: des,
provideRouteAlternatives: true,
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]);
}
}
});
}
} })

谢谢!

最佳答案

  1. provideRouteAlternatives 选项设置为 DirectionsRequesttrue

provideRouteAlternatives
Type: boolean Whether or not route alternatives should be provided. Optional.

  • 添加第二个循环来处理返回的任何其他路由

    service.route({
    origin: src,
    destination: des,
    provideRouteAlternatives: true,
    travelMode: google.maps.DirectionsTravelMode.DRIVING
    }, function (result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
    for (var j = 0; j < result.routes.length; j++) {
    var path = new google.maps.MVCArray();
    polyArray.push(new google.maps.Polyline({
    map: map,
    strokeColor: colors[j],
    strokeOpacity: 1.0,
    strokeWeight: 5
    }));
    polyArray[polyArray.length - 1].setPath(path);
    for (var i = 0, len = result.routes[j].overview_path.length; i < len; i++) {
    path.push(result.routes[j].overview_path[i]);
    }
    }
    }
    });
  • proof of concept fiddle

    代码片段:

    $(document).ready(function() {

    var markers = [

    {
    "title": '',
    "lat": '56.965969',
    "lng": '24.143496',
    "description": ''
    }, {
    "title": '',
    "lat": '56.966259',
    "lng": '24.385860',
    "description": ''
    }
    ];
    var mapOptions = {
    zoom: 11,
    center: new google.maps.LatLng(56.975749, 24.279310),
    scrollwheel: false,
    navigationControl: false,
    mapTypeControl: false,
    scaleControl: false,
    draggable: false
    };
    var service = new google.maps.DirectionsService();
    var polyArray = [];
    var infoWindow = new google.maps.InfoWindow();
    var map = new google.maps.Map(document.getElementById("map_1"), mapOptions);


    var lat_lng = new Array();
    var colors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'];
    var image = 'http://maps.google.com/mapfiles/ms/micons/blue.png';
    var marker = new google.maps.Marker({
    position: new google.maps.LatLng(56.966259, 24.385860),
    map: map,
    title: 'Sillava',
    icon: image
    });
    for (i = 0; i < markers.length; i++) {
    var data = markers[i];
    var myLatlng = new google.maps.LatLng(data.lat, data.lng);
    lat_lng.push(myLatlng);

    }

    for (var i = 0; i < lat_lng.length; i++) {
    if ((i + 1) < lat_lng.length) {
    var src = lat_lng[i];
    var des = lat_lng[i + 1];
    // path.push(src);
    // poly.setPath(path);
    service.route({
    origin: src,
    destination: des,
    provideRouteAlternatives: true,
    travelMode: google.maps.DirectionsTravelMode.DRIVING
    }, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
    for (var j = 0; j < result.routes.length; j++) {
    var path = new google.maps.MVCArray();
    polyArray.push(new google.maps.Polyline({
    map: map,
    strokeColor: colors[j],
    strokeOpacity: 1.0,
    strokeWeight: 5
    }));
    polyArray[polyArray.length - 1].setPath(path);
    for (var i = 0, len = result.routes[j].overview_path.length; i < len; i++) {
    path.push(result.routes[j].overview_path[i]);
    }
    }
    }
    });
    }
    }

    });
    .map {
    width: 100%;
    height: 100%;
    }
    body,
    html {
    width: 100%;
    height: 100%;
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="https://maps.googleapis.com/maps/api/js"></script>
    <div id="map_1" class="map"></div>

    关于javascript - 谷歌地图替代道路以不同颜色显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831558/

    27 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com