Я создал приложение для сбора данных и, как часть этого, хотел бы получить текущее местоположение пользователя, когда он обращается к приложению и веб-сайту с помощью php.
В идеале я хочу сделать это как можно проще. В настоящее время у меня есть следующий скрипт, но в нем есть адрес по умолчанию:
$fullurl = "http://maps.googleapis.com/maps/api/geocode/json?address=1600+Amphitheatre+Parkway,+Mountain+View,+CA&sensor=true";
echo $json;
$string .= file_get_contents($fullurl); // get json content
$json_a = json_decode($string, true); //json decoder
echo $json_a['results'][0]['geometry']['location']['lat']; // get lat for json
echo $json_a['results'][0]['geometry']['location']['lng']; // get ing for json
Мне бы хотелось, чтобы текущее местоположение пользователя заняло место 1600 Amphitheatre Parkway, Mountain View, CA.
Любая помощь очень ценится.
Нет способа получить местоположение пользователя с помощью PHP, так как он работает на стороне сервера. Вы можете получить местоположение пользователя с помощью JavaScript через браузер.
Вот пример. В этом примере я разделил код на два файла. Один для обработки и хранения информации с использованием PHP (geocoordinates.php), а другой (HTML) для сбора информации о геокодировании (index.html), index.html.
Вы можете объединить оба файла в index.php, но я буду держать их отдельно для простоты.
geocoordinates.php
<?php
if(isset($_POST['lat'], $_POST['lng'])) {
$lat = $_POST['lat'];
$lng = $_POST['lng'];
$url = sprintf("https://maps.googleapis.com/maps/api/geocode/json?latlng=%s,%s", $lat, $lng);
$content = file_get_contents($url); // get json content
$metadata = json_decode($content, true); //json decoder
if(count($metadata['results']) > 0) {
// for format example look at url
// https://maps.googleapis.com/maps/api/geocode/json?latlng=40.714224,-73.961452
$result = $metadata['results'][0];
// save it in db for further use
echo $result['formatted_address'];
}
else {
// no results returned
}
}
?>
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Geocoding Page</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
function getLocation() {
if (navigator.geolocation) {
navigator.geolocation.getCurrentPosition(savePosition, positionError, {timeout:10000});
} else {
//Geolocation is not supported by this browser
}
}
// handle the error here
function positionError(error) {
var errorCode = error.code;
var message = error.message;
alert(message);
}
function savePosition(position) {
$.post("geocoordinates.php", {lat: position.coords.latitude, lng: position.coords.longitude});
}
</script>
</head>
<body>
<button onclick="getLocation();">Get My Location</button>
</body>
</html>
Имейте в виду, что в этом примере, когда пользователь нажимает «Get My Location», браузер предложит пользователю разрешить геолокацию. Вы также можете позвонить getLocation функционировать после загрузки страницы, но браузер всегда будет запрашивать разрешение пользователя
Вы можете узнать больше о геолокации на http://www.w3schools.com/htmL/html5_geolocation.asp
Других решений пока нет …