查看: 844|回复: 0

php根据经纬度列出附近的商家

[复制链接]

748

主题

39

回帖

3907

积分

管理员

总舵主

积分
3907
QQ
发表于 2024-1-12 19:46:45 | 显示全部楼层 |阅读模式
要根据用户的经纬度按距离远近列出商家,你可以使用SQL查询,并结合先前提到的Haversine距离计算方法。以下是一个简单的例子:

  1. <?php

  2. function haversineDistance($lat1, $lon1, $lat2, $lon2) {
  3.     // 这个函数在括号的地址里... (http://bbs.winchung.com/forum.php?mod=viewthread&tid=167&extra=page%3D1)
  4. }

  5. // 用户的经纬度
  6. $userLat = 37.7749;
  7. $userLon = -122.4194;

  8. // 查询商家并按距离排序
  9. $query = "SELECT id, name, latitude, longitude FROM merchants ORDER BY haversineDistance(latitude, longitude, $userLat, $userLon)";

  10. // 执行查询并处理结果
  11. // 这里使用你选择的数据库操作方法,例如MySQLi或PDO
  12. // 请根据你的实际情况进行替换
  13. $result = $yourDatabaseConnection->query($query);

  14. if ($result) {
  15.     // 输出商家列表
  16.     while ($row = $result->fetch_assoc()) {
  17.         $merchantId = $row['id'];
  18.         $merchantName = $row['name'];
  19.         $merchantLat = $row['latitude'];
  20.         $merchantLon = $row['longitude'];

  21.         // 计算商家距离
  22.         $distance = haversineDistance($userLat, $userLon, $merchantLat, $merchantLon);

  23.         echo "商家ID: $merchantId, 商家名字: $merchantName, 距离: $distance 公里<br>";
  24.     }

  25.     // 释放结果集
  26.     $result->close();
  27. } else {
  28.     // 处理查询失败的情况
  29.     echo "查询失败: " . $yourDatabaseConnection->error;
  30. }

  31. // 关闭数据库连接
  32. $yourDatabaseConnection->close();

  33. ?>
复制代码


道不同,不相为谋!理想要有,万一实现了呢?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注公众号

相关侵权、举报、投诉及建议等,请发 E-mail:2513533699@qq.com

Powered by Discuz! X5.0 © 2001-2026 Discuz! Team.|鲁ICP备19000917号|鲁公网安备37078302000320号

在本版发帖
关注公众号
QQ客服返回顶部