Dans l'API Baidu Map, comment utiliser Java pour calculer le temps de conduite entre deux emplacements et l'afficher sur la carte ?
L'API Baidu Map offre de riches fonctionnalités, notamment le calcul du temps de conduite entre deux emplacements et son affichage sur la carte. Cet article explique comment utiliser Java pour écrire du code permettant d'implémenter cette fonction.
Tout d'abord, nous devons importer le SDK Java de l'API Baidu Map. Le lien de téléchargement du SDK Java est disponible sur le site officiel de Baidu Map Open Platform. Une fois le téléchargement terminé, importez le fichier jar dans le chemin de construction du projet.
Ensuite, nous devons enregistrer un compte de développeur pour Baidu Maps Open Platform et créer une application. Après avoir créé l'application, vous pouvez obtenir la clé d'accès (ak) dans la page de gestion de l'application.
Dans le code, nous devons d'abord introduire le package correspondant :
import com.baidu.mapapi.model.LatLng; import com.baidu.mapapi.utils.CoordinateConverter; import com.baidu.mapapi.utils.DistanceUtil; import com.baidu.mapapi.utils.RoutePlanUtils;
Ensuite, nous pouvons utiliser le code suivant pour calculer le temps de conduite entre deux emplacements :
String ak = "your_ak"; // 替换成自己的ak String origin = "起点位置"; // 替换成起点位置的经纬度 String destination = "终点位置"; // 替换成终点位置的经纬度 // 创建坐标转换工具 CoordinateConverter converter = new CoordinateConverter(); // 设置原始坐标类型,百度地图坐标类型为BAIDU,可以根据实际情况进行调整 converter.from(CoordinateConverter.CoordType.COMMON); // 设置起点位置 LatLng originLatLng = new LatLng(Double.parseDouble(origin.split(",")[0]), Double.parseDouble(origin.split(",")[1])); converter.coord(originLatLng); LatLng convertedOriginLatLng = converter.convert(); // 设置终点位置 LatLng destinationLatLng = new LatLng(Double.parseDouble(destination.split(",")[0]), Double.parseDouble(destination.split(",")[1])); converter.coord(destinationLatLng); LatLng convertedDestinationLatLng = converter.convert(); // 计算两个位置间的直线距离 double distance = DistanceUtil.getDistance(convertedOriginLatLng, convertedDestinationLatLng); // 计算两个位置间的驾车时间 double drivingTime = RoutePlanUtils.calDrivingTime(distance); System.out.println("驾车时间:" + drivingTime + "分钟");
Dans le code ci-dessus, nous combinons d'abord l'emplacement de départ et le point final La longitude et la latitude de l'emplacement sont converties dans le système de coordonnées de Baidu Map, puis la classe DistanceUtil est utilisée pour calculer la distance en ligne droite entre les deux emplacements. Enfin, le temps de conduite entre deux emplacements est calculé en fonction de la distance en ligne droite via la méthode calDrivingTime de la classe RoutePlanUtils.
Pour afficher les itinéraires routiers pour deux emplacements sur la carte, vous pouvez utiliser l'API Web de Baidu Maps. Voici un exemple de code :
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>Display driving route on Baidu Maps</title> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=your_ak"></script> </head> <body> <div id="map" style="width: 500px; height: 400px;"></div> <script type="text/javascript"> var map = new BMap.Map("map"); var driving = new BMap.DrivingRoute(map, {renderOptions:{map: map, autoViewport: true}}); var pointA = new BMap.Point(起点位置); var pointB = new BMap.Point(终点位置); driving.search(pointA, pointB); </script> </body> </html>
Dans le code ci-dessus, nous utilisons la classe BMap.Map pour créer une instance de carte, puis utilisons la classe BMap.DrivingRoute pour créer un objet itinéraire routier. Affichez l'itinéraire sur la carte en définissant l'option map dans le paramètre renderOptions. Remplissez la longitude et la latitude du point de départ et du point d'arrivée respectivement au pointA et au pointB.
En résumé, grâce au SDK Java de l'API Baidu Map, nous pouvons facilement calculer le temps de conduite entre deux emplacements et l'afficher sur la carte.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!