System time(GMT+7): 16:50:01 06/02/2023

Lấy các cung đường , khoảng cách giữa 2 địa điểm qua google map api - laravel

Trước hết các bạn cần enable các thư viện sau:

Maps JavaScript API, Geolocation API, Places API, Geocoding API, Directions API, Roads API, Distance Matrix API

-----------------------------------------------------------------------------------------------------------------------------------

Hàm js lấy các cung đường ,khoảng cách giữa 2 địa điểm (Tham số truyền vào là 1 object google.maps.LatLng)

function shortestRoute(origin, destination) {
	if(destination!=''){

		directionsService = new google.maps.DirectionsService();
		var routesResponses = [];

		directionsService.route({
			origin: origin,
			destination: destination,
			provideRouteAlternatives: true,
			avoidHighways: true,
			travelMode: google.maps.TravelMode.DRIVING
		}, function (response, status) {
			if (status === google.maps.DirectionsStatus.OK) {
				routesResponses.push(response);
			} else {
				window.alert('Directions request failed due to ' + status);
			}
			var fastest = Number.MAX_VALUE,
			shortest = Number.MAX_VALUE;

			routesResponses.forEach(function (res) {
				res.routes.forEach(function (rou, index) {
				console.log("distance of route " + index + ": ", rou.legs[0].distance.value);
				console.log("duration of route " + index + ": ", rou.legs[0].duration.value);
				if (rou.legs[0].distance.value < shortest) shortest = rou.legs[0].distance.value;
				if (rou.legs[0].duration.value < fastest) fastest = rou.legs[0].duration.value;

				})
			})

		});
	}
}

 

Hàm convert từ toạ độ latlng dạng string qua object

function getLatLngFromString(location) { 
	var latlang = location.replace(/[()]/g,''); 
	var latlng = latlang.split(','); 
	locate = new google.maps.LatLng(parseFloat(latlng[0]),parseFloat(latlng[1])); 
	return locate; 
}

Ví dụ: Bạn có toạ độ 1 điểm là (lat,lng) , bạn ném vào hàm trên sẽ trả về 1 object LatLng , bạn ném object đó vào hàm get quãng đường là xong.

Trong hình là các cung đường và quãng đường giữa Toà nhà FPT cầu giấy (21.02690909999999, 105.7886976) và đài truyền hình việt nam (21.0260958, 105.8127021)

 

Chức năng này kết hợp với MAP JAVASCRIPT API sẽ phục vụ được đầy đủ tính năng liên quan đến vận chuyển, bán hàng , shipping.