|
|
要根据用户的经纬度按距离远近列出商家,你可以使用SQL查询,并结合先前提到的Haversine距离计算方法。以下是一个简单的例子:
- <?php
- function haversineDistance($lat1, $lon1, $lat2, $lon2) {
- // 这个函数在括号的地址里... (http://bbs.winchung.com/forum.php?mod=viewthread&tid=167&extra=page%3D1)
- }
- // 用户的经纬度
- $userLat = 37.7749;
- $userLon = -122.4194;
- // 查询商家并按距离排序
- $query = "SELECT id, name, latitude, longitude FROM merchants ORDER BY haversineDistance(latitude, longitude, $userLat, $userLon)";
- // 执行查询并处理结果
- // 这里使用你选择的数据库操作方法,例如MySQLi或PDO
- // 请根据你的实际情况进行替换
- $result = $yourDatabaseConnection->query($query);
- if ($result) {
- // 输出商家列表
- while ($row = $result->fetch_assoc()) {
- $merchantId = $row['id'];
- $merchantName = $row['name'];
- $merchantLat = $row['latitude'];
- $merchantLon = $row['longitude'];
- // 计算商家距离
- $distance = haversineDistance($userLat, $userLon, $merchantLat, $merchantLon);
- echo "商家ID: $merchantId, 商家名字: $merchantName, 距离: $distance 公里<br>";
- }
- // 释放结果集
- $result->close();
- } else {
- // 处理查询失败的情况
- echo "查询失败: " . $yourDatabaseConnection->error;
- }
- // 关闭数据库连接
- $yourDatabaseConnection->close();
- ?>
复制代码
|
|