Google Maps JavaScript API -用一种颜色显示未激活的替代路由,用另一种颜色显示激活的替代路由
Google Maps JavaScript API - Show INACTIVE alternative routes in one color, ACTIVE alternative route in another
我正在使用谷歌地图JavaScript API,并提供替代路线的方向。
我想用灰色显示INACTIVE替代路由,用霓虹绿色显示当前ACTIVE路由。
我如何定位非活动和活动路由状态并控制它们的颜色?
我已经能够使用Geocodezip的示例更改替代路由颜色,但现在我需要针对非活动状态和活动状态。
下面是我要用
实现的一个功能示例for (var j = 0; j < response.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 = response.routes[j].overview_path.length; i < len; i++) {
path.push(response.routes[j].overview_path[i]);
}
}
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Directions service</title>
<style>
html, body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
#floating-panel {
position: absolute;
top: 10px;
left: 25%;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
text-align: center;
font-family: 'Roboto','sans-serif';
line-height: 30px;
padding-left: 10px;
}
</style>
</head>
<body>
<div id="floating-panel">
<b>Start: </b>
<select id="start">
<option value="chicago, il">Chicago</option>
<option value="st louis, mo">St Louis</option>
<option value="joplin, mo">Joplin, MO</option>
<option value="oklahoma city, ok">Oklahoma City</option>
<option value="amarillo, tx">Amarillo</option>
<option value="gallup, nm">Gallup, NM</option>
<option value="flagstaff, az">Flagstaff, AZ</option>
<option value="winona, az">Winona</option>
<option value="kingman, az">Kingman</option>
<option value="barstow, ca">Barstow</option>
<option value="san bernardino, ca">San Bernardino</option>
<option value="los angeles, ca">Los Angeles</option>
</select>
<b>End: </b>
<select id="end">
<option value="chicago, il">Chicago</option>
<option value="st louis, mo">St Louis</option>
<option value="joplin, mo">Joplin, MO</option>
<option value="oklahoma city, ok">Oklahoma City</option>
<option value="amarillo, tx">Amarillo</option>
<option value="gallup, nm">Gallup, NM</option>
<option value="flagstaff, az">Flagstaff, AZ</option>
<option value="winona, az">Winona</option>
<option value="kingman, az">Kingman</option>
<option value="barstow, ca">Barstow</option>
<option value="san bernardino, ca">San Bernardino</option>
<option value="los angeles, ca">Los Angeles</option>
</select>
</div>
<div id="map"></div>
<script>
var polyArray = [];
var colors;
function initMap() {
polyArray = [];
colors = ['#ff0000', '#00ff00', '#0000ff', '#ffff00', '#ff00ff', '#00ffff'];
var directionsService = new google.maps.DirectionsService;
var directionsDisplay = new google.maps.DirectionsRenderer;
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 7,
center: {lat: 41.85, lng: -87.65}
});
directionsDisplay.setMap(map);
var onChangeHandler = function() {
calculateAndDisplayRoute(directionsService, directionsDisplay);
};
document.getElementById('start').addEventListener('change', onChangeHandler);
document.getElementById('end').addEventListener('change', onChangeHandler);
}
function calculateAndDisplayRoute(directionsService, directionsDisplay) {
directionsService.route({
origin: document.getElementById('start').value,
destination: document.getElementById('end').value,
travelMode: 'DRIVING',
provideRouteAlternatives: true
}, function(response, status) {
if (status === 'OK') {
for (var j = 0; j < response.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 = response.routes[j].overview_path.length; i < len; i++) {
path.push(response.routes[j].overview_path[i]);
}
}
directionsDisplay.setDirections(response);
} else {
window.alert('Directions request failed due to ' + status);
}
});
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?sensor=false&callback=initMap">
</script>
</body>
</html>
当你"通过折线数组的路线、过程:
- 设置所有路由的strokeColor为'grey'
- 设置活动路由的折线颜色为"active";颜色
概念验证小提琴(基于我的例子,你参考,点击折线"激活";)
代码片段:
$(document).ready(function() {
var markers = [{
"title": '',
"lat": '56.965969',
"lng": '24.143496',
"description": ''
}, {
"title": '',
"lat": '56.966259',
"lng": '24.385860',
"description": ''
}];
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 = 'https://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];
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: "grey",
strokeOpacity: 0.3,
strokeWeight: 5
}));
if (j == 0) polyArray[0].setOptions({
strokeColor: '#00ff00',
strokeOpacity: 1.0
});
polyArray[polyArray.length - 1].setPath(path);
google.maps.event.addListener(polyArray[polyArray.length - 1], 'click', function() {
for (var i = 0; i < polyArray.length; i++) {
polyArray[i].setOptions({
strokeOpacity: 0.3,
strokeColor: "grey"
});
}
this.setOptions({
strokeOpacity: 1.0,
strokeColor: "#00ff00"
});
})
for (var i = 0, len = result.routes[j].overview_path.length; i < len; i++) {
path.push(result.routes[j].overview_path[i]);
}
}
}
});
}
}
});
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
}]
}]
};
.map {
width: 100%;
height: 100%;
}
body,
html {
height: 100%;
width: 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?key=AIzaSyCkUOdZ5y7hMm0yrcCQoCvLwzdM6M8s5qk"></script>
<div id="map_1" class="map"></div>
相关文章:
- 从桌面读取python文件时高亮显示代码
- 使用JS如何动态更改显示的html文件中的文本背景颜色
- 如何在生成下载文件时显示加载动画
- 在GXT中激活上下文菜单时,如何保持选中的文本高亮显示?(EXT GWT 2.x)
- 如何隐藏搜索结果框,我希望它们在点击并激活键控功能时显示
- 角度 SPA 未显示状态激活的 API 数据
- 当值达到100%时,显示()函数未激活
- 网站不会显示在IE一旦我激活脚本.除了背景,一切都不见了
- 显示链路去激活的消息
- setTimeout()获取窗口,在setTimeout激活之前显示其他脚本函数
- 如何在默认情况下激活CodeMirror(高亮显示)中的代码颜色
- Javascript -检查自动完成激活时是否显示建议
- 在“激活”上显示日期选择器只能输入字段
- Google Maps JavaScript API -用一种颜色显示未激活的替代路由,用另一种颜色显示激活的替代路由
- 激活一个功能时,页面显示jquery移动
- 在激活一个功能的按钮上显示经过的秒数
- 突出显示输入字段中的文本并同时激活光标-可能的
- 如何在按下提交按钮后激活Fancybox或如何让用户在提交后使用Fancybox显示注册屏幕
- 当javascript激活时,网页不会显示
- 鼠标移动激活时显示文本