gpt4 book ai didi

javascript - 如何获取不同路线从出发地到目的地的所有经纬度

转载 作者:行者123 更新时间:2023-11-28 00:43:57 26 4
gpt4 key购买 nike

目前我能够获取从源到目的地的所有纬度和经度。

但是这样我只能得到 1 条路径。

现在我想要从源到目的地的不同 route 选择 1 条路线的选项

而且我想将所有经纬度存储到我的数据库中。

Database structure :

Rid Lat Lon

我正在使用 asp.net c# 技术..

How can i get the option for select path and according to that path need to get all the lat and lon.

而且所有纬度和经度都需要使用 C# 代码存储在我的数据库中。

我如何执行此任务?

我正在使用以下代码:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Geocoding service</title>
<style>
html, body, #map-canvas {
height: 100%;
min-height: 600px;
min-width: 700px;
margin: 0px;
padding: 0px;
}

#map-canvas {
height: 50%;
}

#panel {
position: absolute;
top: 5px;
left: 50%;
margin-left: -180px;
z-index: 5;
background-color: #fff;
padding: 5px;
border: 1px solid #999;
}
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
</head>
<body>
<div id="panel">
<label>
Origin
<input id="origin" type="text" value="">
</label>
<label>
Destination
<input id="destination" type="text" value="">
</label>
<input type="button" value="GetDirections" onclick="calcRoute()">
</div>
<div id="map-canvas"></div>
<div id="vertex-container">
<label>Points</label>
<ul id="vertex">
</ul>
</div>
<script type="text/javascript">
var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {
directionsDisplay = new google.maps.DirectionsRenderer();

var mapOptions = {
zoom: 7,
center: new google.maps.LatLng(25.5911, 86.1611)
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
directionsDisplay.setMap(map);
}

function calcRoute() {
var start = document.getElementById('origin').value;
var end = document.getElementById('destination').value;
var request = {
origin: start,
destination: end,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);
if (response.routes && response.routes.length > 0) {
var routes = response.routes;
for (var j = 0; j < routes.length; j++) {
var points = routes[j].overview_path;
var ul = document.getElementById("vertex");
for (var i = 0; i < points.length; i++) {
var li = document.createElement('li');
li.innerHTML = getLiText(points[i]);
ul.appendChild(li);
}
}
}
}
});
}
function getLiText(point) {
var lat = point.lat(),
lng = point.lng();
return "lat: " + lat + " lng: " + lng;
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</body>
</html>

最佳答案

获取Google Maps要向您发送多个选项,您必须构建您的 google.maps.DirectionsRequest对象设置provideRouteAlternatives属性至true ,像这样:

var request = {
origin: start,
destination: end,
travelMode: google.maps.TravelMode.DRIVING,
provideRouteAlternatives : true
};

然后是google.maps.DirectionsResult对象返回你routes这是一个 Array.<DirectionsRoute>与几个DirectionsRoute对象(通常当 provideRouteAlternatives 设置为 false 时它只包含一个对象)。

所以从您正在使用的代码来看:

var routes = response.routes;

routes将有几个元素需要迭代。在那里你有几条路。

现在当你这样做时directionsDisplay.setDirections(response)谷歌地图只会绘制索引 0 中的路线数组的 routes 。要让 Google map 绘制另一条路径,您必须指定 routeIndex google.maps.DirectionsRendererOptions的属性(property)您传递给 google.maps.DirectionsRenderer 的对象构造函数。

类似的东西将绘制所有路径(您将需要几个 DirectionsRenderer 对象):

var routes = response.routes;
for (var j = 0; j < routes.length; j++) {
var directionsDisplay = new google.maps.DirectionsRenderer({ map: map, directions: response, routeIndex: j });
directionsDisplays.push(directionsDisplay);
var points = routes[j].overview_path;
var ul = document.getElementById("vertex");
for (var i = 0; i < points.length; i++) {
var li = document.createElement('li');
li.innerHTML = getLiText(points[i]);
ul.appendChild(li);
}
}

如果你想要Polylines要具有不同的颜色,您还可以在 DirectionsRendererOptions 中设置它对象。

整个代码将是这样的:

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Geocoding service</title>
<style>
html, body, #map-canvas { height: 100%; min-height: 600px; min-width: 700px; margin: 0px; padding: 0px }
#map-canvas { height: 50%; }
#panel { position: absolute; top: 5px; left: 50%; margin-left: -180px; z-index: 5; background-color: #fff; padding: 5px; border: 1px solid #999; }
</style>
<script src="https://maps.googleapis.com/maps/api/js?v=3.exp&sensor=false"></script>
</head>
<body>
<div id="panel">
<label>Origin
<input id="origin" type="text" value="">
</label>
<label>Destination
<input id="destination" type="text" value="">
</label>
<input type="button" value="GetDirections" onclick="calcRoute()">
</div>
<div id="map-canvas"></div>
<div id="vertex-container">
<label>Points</label>
<ul id="vertex">
</ul>
</div>
<script type="text/javascript">
var directionsDisplays = [];
var directionsService = new google.maps.DirectionsService();
var map;

function initialize() {

var mapOptions = {
zoom: 7,
center: new google.maps.LatLng(48.85727000, 2.35238)
};
map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
}

function calcRoute() {
var start = document.getElementById('origin').value;
var end = document.getElementById('destination').value;
var request = {
origin: start,
destination: end,
provideRouteAlternatives: true,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
if (response.routes && response.routes.length > 0) {
var routes = response.routes;
for (var j = 0; j < routes.length; j++) {
var directionsDisplay = new google.maps.DirectionsRenderer({ map: map, directions: response, routeIndex: j });
directionsDisplays.push(directionsDisplay);
var points = routes[j].overview_path;
var ul = document.getElementById("vertex");
for (var i = 0; i < points.length; i++) {
var li = document.createElement('li');
li.innerHTML = getLiText(points[i]);
ul.appendChild(li);
}
}
}
}
});
}
function getLiText(point) {
var lat = point.lat(),
lng = point.lng();
return "lat: " + lat + " lng: " + lng;
}

google.maps.event.addDomListener(window, 'load', initialize);
</script>
</body>
</html>

关于javascript - 如何获取不同路线从出发地到目的地的所有经纬度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27619285/

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