Я пытаюсь создать простой трекер, используя карты php и google. Сейчас у меня работает трекер, но я хочу, чтобы он обнаруживал близость к определенным маркерам. Например, если пользователь находится в пределах 30 м от моего «дома» (маркер), сценарий обновит его статус, заявив, что он находится в «так и в доме». Я хотел бы, чтобы это было возможно в PHP. Лучше всего было бы определить длинный/лат каждого маркера и создать вокруг него простой периметр, а затем определить, будут ли пользователи длинными и латами располагаться в пределах этого периметра. Существуют ли примеры этого, которые я мог бы использовать, или математические уравнения.PHP/Google Maps - Geofence
3
A
ответ
2
Формула Haversine - это то, что вы ищете. Там an article on Google Code описывает, как использовать его с MySQL и PHP.
2
Решение Used -
function calc_distance($point1, $point2)
{
$radius = 3958; // Earth's radius (miles)
$deg_per_rad = 57.29578; // Number of degrees/radian (for conversion)
$distance = ($radius * pi() * sqrt(
($point1['lat'] - $point2['lat'])
* ($point1['lat'] - $point2['lat'])
+ cos($point1['lat']/$deg_per_rad) // Convert these to
* cos($point2['lat']/$deg_per_rad) // radians for cos()
* ($point1['long'] - $point2['long'])
* ($point1['long'] - $point2['long'])
)/180);
return $distance; // Returned using the units used for $radius.
}
Я использовал формулу Haversine я нашел на другом посту.
Пожалуйста, не пишите ответы на вопросы или используйте [SOLVED] в заголовке. Если вы сами определились с ответом, разместите его в поле ниже. Поскольку вы новый пользователь с rep <100, вы сможете сделать это за 7 часов. – abcd
@ Keiran Lovett, какой db вы используете? Есть ли шанс, что вы можете использовать postgresql? –
Спасибо, что указали, что из Йода! –