インターネットの発展に伴い、ますます多くの人がナビゲーション マップ アプリケーションを使用して旅行ルートを計画し、近くのビジネス、観光名所、その他の情報を検索し始めています。 Web 開発で広く使用されているプログラミング言語である PHP には、ナビゲーション マップ アプリケーションを実装するための特定の機能もあります。この記事では、PHPでナビゲーション地図アプリケーションを実装する方法を紹介します。
1. ユーザーの位置情報の取得
ナビゲーション マップ アプリケーションでは、ユーザーの位置情報を取得することは非常に重要なステップです。 PHP の HTTP リクエストを通じてユーザーの位置情報を取得できます。具体的な実装方法は次のとおりです:
navigator.geolocation.getCurrentPosition(function(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; //将经纬度发给后端 });
$lat = $_POST['lat']; //获取经度 $lng = $_POST['lng']; //获取纬度
ナビゲーション地図アプリケーションを実装するには、地図 API を使用する必要があり、この API を通じて、地図の表示、ラベル付け、経路計画などの機能を実現できます。一般的に使用される地図 API には、Baidu Maps、Tencent Maps、Amap などが含まれます。ここでは、Baidu Map を例として、PHP で地図 API を使用する方法を説明します。
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=YOUR_APP_KEY"></script>
//创建地图实例 var map = new BMap.Map("container"); //设置中心点 var point = new BMap.Point(lng,lat); map.centerAndZoom(point, 15);
//创建标注 var marker = new BMap.Marker(point); //添加标注到地图中 map.addOverlay(marker);
//创建步行路径规划实例 var walking = new BMap.WalkingRoute(map, {renderOptions:{map: map, autoViewport: true}}); //路线规划 walking.search(startPoint, endPoint);3. データベースと組み合わせて近くのビジネスをクエリする
ナビゲーション マップ アプリケーションでは、多くの場合、ユーザーが周囲のビジネスに関する情報を見つけやすくするために、データベースを組み合わせて近くのビジネスをクエリする必要があります。以下では、PHP 言語を例として、MySQL データベースと組み合わせてこの機能を実装する方法を紹介します。
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;
//查询距离当前位置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";
以上がPHPでナビゲーションマップアプリケーションを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。