Как получить текущее местоположение пользователя с помощью Google Geocode API и PHP

Я создал приложение с и как часть сбора данных, я хотел бы захватить текущее местоположение пользователя, когда они получают доступ к приложению и веб-сайту, используя 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> 

Имейте в виду, что в этом примере, как только пользователь нажмет «Получить мое местоположение», браузер предложит пользователю разрешить геолокацию. Вы можете также вызвать функцию getLocation после загрузки страницы, но браузер всегда будет запрашивать разрешение пользователя

Вы можете узнать больше о геолокации по адресу http://www.w3schools.com/htmL/html5_geolocation.asp