У меня есть карта Google с определенными событиями и т. Д.
Как я могу перечислять все события, например. в 50 км вокруг моего местоположения?
Поскольку ваш вопрос немного расплывчатый, я предполагаю, что у вас есть список lat, long координат. Вы можете получить их из SQL, используя что-то вроде этого:
SELECT z.id AS z__id, z.zipcode AS z__zipcode, z.city AS z__city, z.state AS z__state, z.county AS z__county, z.zip_class AS z__zip_class, z.latitude AS z__latitude, z.longitude AS z__longitude, ((ACOS(SIN(* PI() / 180) * SIN(z.latitude * PI() / 180) + COS(* PI() / 180) * COS(z.latitude * PI() / 180) * COS((- z.longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS z__0, ((ACOS(SIN(* PI() / 180) * SIN(z.latitude * PI() / 180) + COS(* PI() / 180) * COS(z.latitude * PI() / 180) * COS((- z.longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515 * 1.609344) AS z__1 FROM zipcode z WHERE z.city != ? ORDER BY z__0 asc LIMIT 50
z_ 0 будет значением в милях, тогда как z _1 будет расстоянием в км.
(источник: http://www.doctrine-project.org/projects/orm/1.2/docs/manual/behaviors/en#core-behaviors:geographic )
Или используйте что-то вроде этого (похожее в php):
function distance($lat1, $lon1, $lat2, $lon2, $unit) { $theta = $lon1 - $lon2; $dist = sin(deg2rad($lat1)) * sin(deg2rad($lat2)) + cos(deg2rad($lat1)) * cos(deg2rad($lat2)) * cos(deg2rad($theta)); $dist = acos($dist); $dist = rad2deg($dist); $miles = $dist * 60 * 1.1515; $unit = strtoupper($unit); if ($unit == "K") { return ($miles * 1.609344); } else if ($unit == "N") { return ($miles * 0.8684); } else { return $miles; } }