PDA

View Full Version : محاسبه ی نزدیک ترین و دورترین مسیر در Google Map Api



HOSSEINONLINE7
چهارشنبه 30 اردیبهشت 1394, 15:43 عصر
سلام من با استفاده از Api در گوگل مپ مسیر بین 2 طول و عرض جغرافیایی را بدست میارم . خودش بطور پیشفرض نزدیک ترین مسیر را نشون میده . من میخوام دورترین مسیرش هم بدست بیارم .

میخوام هر 2 مسیر را به کاربر نشون بدم چطور باید این کار را بکنم ؟

jaykob
چهارشنبه 30 اردیبهشت 1394, 16:28 عصر
سلام من با استفاده از Api در گوگل مپ مسیر بین 2 طول و عرض جغرافیایی را بدست میارم . خودش بطور پیشفرض نزدیک ترین مسیر را نشون میده . من میخوام دورترین مسیرش هم بدست بیارم .

میخوام هر 2 مسیر را به کاربر نشون بدم چطور باید این کار را بکنم ؟

سلام

اگه امکانش براتون هست راهکار محاسبه فاصله بین ۲ طول و عرض جغرافیایی رو بگید که ما هم استفاده کنیم

با تشکر

HOSSEINONLINE7
چهارشنبه 30 اردیبهشت 1394, 17:00 عصر
سلام

اگه امکانش براتون هست راهکار محاسبه فاصله بین ۲ طول و عرض جغرافیایی رو بگید که ما هم استفاده کنیم

با تشکر

سلام با این روش میشه فاصله ی بین 2 طول و عرض جغرافیایی را بدست آورد .

طول عرض جغرافیایی را به تابع ارسال میکنید اون 2 مسیر را با خط به هم وصل میکنه :

var directionsDisplay;
var directionsService = new google.maps.DirectionsService();
var route;
var routeBack;

function initialize() {

directionsDisplay = new google.maps.DirectionsRenderer();
var center = new google.maps.LatLng(32.646602, 51.667866);
var mapOptions = {
center: center,
zoom: 13,
mapTypeId: google.maps.MapTypeId.ROADMAP,
panControl: true
}
var map = new google.maps.Map(document.getElementById('googleMap '), mapOptions);
directionsDisplay.setMap(map);

var map = new google.maps.Map(document.getElementById('googleMap Back'), mapOptions);
directionsDisplay.setMap(map);

}

var oldMarkers = null;
var oldiw = null;




$("#calcRoute").click(function (e) {
e.preventDefault();

var s_lat = parseFloat(@ViewData["lat"]);
var s_lng = parseFloat(@ViewData["lng"]);

var e_lat = parseFloat(@ViewData["Old_lat"]);
var e_lng = parseFloat(@ViewData["Old_lng"]);

calcRoute(s_lat, s_lng, e_lat, e_lng);

calcMeter(s_lat, s_lng, e_lat, e_lng);

calcBackRoute(s_lat, s_lng, e_lat, e_lng);

BackcalcMeter(s_lat, s_lng, e_lat, e_lng);
})


function calcRoute(s_lat, s_lng, e_lat, e_lng)
{

var myLatlng = new google.maps.LatLng(32.646602, 51.667866);
var mapOptions = {
zoom: 14,
minZoom: 13,
maxZoom: 19,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
disableDefaultUI: true,
overviewMapControl: true,
streetViewControl: true,
scaleControl: true,
mapTypeControl: true,
panControl: true,
panControlOptions:{
position: google.maps.ControlPosition.TOP_RIGHT
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.LARGE,
position: google.maps.ControlPosition.TOP_RIGHT
}
}
var map = new google.maps.Map(document.getElementById("googleMap"), mapOptions);


var polys = new google.maps.Polyline({
map: map,
strokeColor: "#CC33FF",
strokeOpacity: 0.6,
strokeWeight: 15,
});
myCoord = [
new google.maps.LatLng(s_lat, s_lng),
new google.maps.LatLng(e_lat, e_lng),

];

// BEGIN: Snap to road
var service = new google.maps.DirectionsService();
var directionsDisplay = new google.maps.DirectionsRenderer();
directionsDisplay.setMap(map);

var waypts = [];
for(j=1;j<myCoord.length-1;j++){
waypts.push({location: myCoord[j],
stopover: true});
}

var request = {
origin: myCoord[0],
destination: myCoord[myCoord.length-1],
waypoints: waypts,
travelMode: google.maps.DirectionsTravelMode.DRIVING
};
service.route(request,function(result, status) {
if(status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(result);
} else { alert("Directions request failed:" +status); }
});


}

بعد از اون با تابع زیر هم فاصله را میشه بدست آورد :

function calcMeter(s_lat, s_lng, e_lat, e_lng){

var request = {
origin: s_lat + ',' + s_lng,
destination: e_lat + ',' + e_lng,
//waypoints: waypts,
optimizeWaypoints: true,
travelMode: google.maps.TravelMode.DRIVING
};
directionsService.route(request, function (response, status) {
if (status == google.maps.DirectionsStatus.OK) {
directionsDisplay.setDirections(response);

var route = response.routes[0];
var routeKilometer = document.getElementById('DivRouteKilometer');
// For each route, display summary information.
for (var i = 0; i < route.legs.length; i++) {
route = route.legs[i].distance.text;
localStorage['route'] = route;
routeKilometer.innerHTML += '<b>مسیر رفت</b><br>'
routeKilometer.innerHTML += route;
}

}
});
}


لطفا یکی از دوستان به منم کمک کنه تا مشکلم حل بشه .

HOSSEINONLINE7
پنج شنبه 31 اردیبهشت 1394, 19:00 عصر
دوستان کسی این مورد را حل کرده ؟