Maison  >  Article  >  développement back-end  >  Comment implémenter une application de carte de navigation en PHP ?

Comment implémenter une application de carte de navigation en PHP ?

PHPz
PHPzoriginal
2023-05-12 08:03:371499parcourir

Avec le développement d'Internet, de plus en plus de personnes commencent à utiliser des applications de cartes de navigation pour planifier leurs itinéraires de voyage et trouver des informations sur les entreprises, les attractions et autres informations à proximité. En tant que langage de programmation largement utilisé dans le développement Web, PHP possède également certaines capacités dans la mise en œuvre d'applications de cartes de navigation. Cet article présentera comment implémenter des applications de cartes de navigation en PHP.

1. Obtenir des informations de localisation de l'utilisateur
Dans les applications de cartes de navigation, l'obtention d'informations de localisation de l'utilisateur est une étape très importante. Nous pouvons obtenir des informations de localisation de l'utilisateur via la requête HTTP de PHP. La méthode de mise en œuvre spécifique est la suivante :

  1. Utilisez JavaScript pour localiser l'emplacement de l'utilisateur et enregistrer la latitude et la longitude :
navigator.geolocation.getCurrentPosition(function(position) {
  var lat = position.coords.latitude;
  var lng = position.coords.longitude;
  //将经纬度发给后端
});
  1. Le backend utilise PHP pour recevoir la latitude et la longitude. Informations de longitude :
$lat = $_POST['lat']; //获取经度
$lng = $_POST['lng']; //获取纬度

Grâce à cela Après avoir obtenu les informations de localisation de l'utilisateur de cette manière, nous pouvons marquer l'emplacement de l'utilisateur sur la carte pour planifier la navigation.

2. Utilisez l'API de carte tierce
Pour implémenter des applications de carte de navigation, vous devez utiliser l'API de carte via l'API, vous pouvez réaliser l'affichage de la carte, l'étiquetage, la planification d'itinéraire et d'autres fonctions. Les API cartographiques couramment utilisées incluent Baidu Maps, Tencent Maps, Amap, etc. Ici, nous prenons Baidu Map comme exemple pour décrire comment utiliser l'API map en PHP.

  1. Présentez l'API Baidu Map :
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=YOUR_APP_KEY"></script>

Parmi eux, YOUR_APP_KEY doit être remplacé par votre propre application AK Baidu Map. Lors de la candidature à l'application Baidu Map, une clé AK sera générée pour accéder à l'API Baidu Map.

  1. Créez un exemple de carte :
//创建地图实例  
var map = new BMap.Map("container");  
//设置中心点  
var point = new BMap.Point(lng,lat);  
map.centerAndZoom(point, 15);  
  1. Marquez l'emplacement sur la carte :
//创建标注  
var marker = new BMap.Marker(point);  
//添加标注到地图中  
map.addOverlay(marker);  
  1. Implémentez la planification de chemin :

Baidu Map propose trois méthodes de planification de chemin : DrivingRoute, WalkingRoute et RidingRoute. aux besoins réels Choisir la méthode appropriée. Par exemple, pour mettre en œuvre la planification des sentiers pédestres :

//创建步行路径规划实例  
var walking = new BMap.WalkingRoute(map, {renderOptions:{map: map, autoViewport: true}});  
//路线规划  
walking.search(startPoint, endPoint);  

3. Combiner avec une base de données pour interroger les entreprises à proximité
Les applications de cartes de navigation doivent souvent combiner des bases de données pour interroger les entreprises à proximité afin de permettre aux utilisateurs de trouver des informations sur les entreprises environnantes. Ci-dessous, nous prenons le langage PHP comme exemple pour présenter comment implémenter cette fonction en conjonction avec la base de données MySQL.

  1. Utilisez la base de données MySQL pour stocker des informations commerciales :
CREATE TABLE `shop` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(50) NOT NULL,
  `address` varchar(100) NOT NULL,
  `lng` double NOT NULL,
  `lat` double NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
  1. Interrogez les entreprises à proximité :
//查询距离当前位置10公里范围内的商家信息
$radius = 10; //搜索半径
$sql = "SELECT id, name, address, lng, lat, ROUND(6378.138 * 2 * ASIN(SQRT(POW(SIN(($lat * PI() / 180 - lat * PI() / 180) / 2),2) + COS($lat * PI() / 180) * COS(lat * PI() / 180) * POW(SIN(($lng * PI() / 180 - lng * PI() / 180) / 2),2)))) AS distance FROM shop WHERE lng BETWEEN ($lng-$radius/abs(cos(radians($lat))*111.2)) AND ($lng+$radius/abs(cos(radians($lat))*111.2)) AND lat BETWEEN ($lat-$radius/111.2) AND ($lat+$radius/111.2) HAVING distance <= $radius ORDER BY distance ASC";

Dans cette instruction SQL, $lat et $lng représentent la latitude et la longitude de l'utilisateur, et $radius représente le rayon de recherche. Calculez la distance entre les commerçants et les utilisateurs en fonction de la longitude et de la latitude, et filtrez les informations sur les commerçants dans le rayon de recherche de l'utilisateur.

Ce qui précède est le processus de base d'implémentation d'une application de carte de navigation en PHP. Dans le processus de développement proprement dit, vous devez également prêter attention à des problèmes tels que la sécurité, l'optimisation des performances et les spécifications du code. J'espère que cet article pourra fournir des références et de l'aide aux débutants.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn