我将经度和纬度存储在数据库中,如
表名:km_stores fields:store_id,store_long,store_lat,store_name
如何使用经度和纬度拉出最近的商店?
我正在使用
<script>
var x = document.getElementById("demo");
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(showPosition);
} else {
x.innerHTML = "Geolocation is not supported by this browser.";
}
}
function showPosition(position) {
document.getElementById("km_long").value = position.coords.latitude;
document.getElementById("km_lat").value = position.coords.longitude;
}
</script>
<strong>Long:</strong> <input type="text" id="km_long" /> <strong>Latitude:</strong> <input type="text" id="km_lat" />
[php]
global $wpdb;
$results = $wpdb->get_results('select * from km_stores', OBJECT );
foreach ($results as $store) {
echo $store->store_name;
}
[/php]
[php][/php]
标签,因为我在WordPress页面插件中使用PHP。
答案 0 :(得分:0)
使用毕达哥拉斯来远离坐标。
如果你的坐标是5,15(为了论证),你喜欢的第一个商店是10,20。你可以使用;
$distance = sqrt((5 - 10) * (5 - 10) + (15 - 20) * (15 - 20))
这个公式可能会给你一个负数,但是如果你忽略了 - ,你就会得到距离。
道歉,这个答案有点粗糙。
答案 1 :(得分:0)
现在你的选择语句正在拉入所有点,因此你想要限制它只拉动附近的点。最简单的方法是在数据库表中添加lat和lng值的搜索条件。
$query = 'SELECT * FROM km_stores WHERE lat BETWEEN ' . $lat - x . ' AND ' . $lat + x;
$query = $query . ' AND lng BETWEEN ' . $lng - x . ' AND ' . $lng + x;
$results = $wpdb->get_results($query, OBJECT );
这假设您定义了$ lat和$ lng值,表示您要搜索的点(看起来您将它们称为km_lat和km_lng)。然后你将用你希望点在其中的纬度/长度距离替换x。使用这些值来确定适用于您的应用程序的数字。