Геокодирование в форме отправки - PullRequest
0 голосов
/ 15 ноября 2010

Я искал несколько форумов поддержки и все еще не могу найти ответ, который ищу.По сути, у меня есть форма регистрации пользователя на моем сайте.Когда пользователь нажимает «отправить», он сохраняет свои данные в базе данных MySQL и перенаправляет их на другую страницу.Достаточно просто.

Но я хочу иметь другую страницу, на которой есть карта с маркером для приблизительного местоположения каждого зарегистрированного пользователя (город, штат, страна).

Это не так сложно сделать, если пользователям нужно было ввести свою широту и долготу.Но кому эта информация доступна?

Когда пользователь нажимает кнопку "отправить", три поля ввода объединяются в одну переменную ($ address).Как я могу геокодировать эту переменную ($ address) и вывести ее на две другие переменные ($ lat и $ lng) ???Глядя, чтобы сделать это ДО mysql_connect, таким образом у меня есть все готовое для вставки в таблицу базы данных mySQL.

<code>
$first_name=$_POST['first_name'];
$last_name=$_POST['last_name'];
$status=$_POST['status'];
$service=$_POST['service'];
$rank=$_POST['rank'];
$specialty=$_POST['specialty'];
$address=$_POST['city'] . ',' . $_POST['state'] . ',' . $_POST['country'];
$city=$_POST['city'];
$state=$_POST['state'];
$country=$_POST['country'];
$email=$_POST['email'];</p>

<p>mysql_connect($host,$username,$password) or die("Unable to connect to database");
@mysql_select_db($database) or die("Unable to select database");</p>

<p>$query = "INSERT INTO $table VALUES ('','$first_name','$last_name','$status','$service','$rank','$speciality','$address','$city','$state','$country','','','$email')";
mysql_query($query);</p>

<p>

Любая помощь будет очень признательна !!!Работает с PHP и MySQL.

Ответы [ 2 ]

8 голосов
/ 15 ноября 2010

Вы можете использовать Google Geocoding API . Это довольно просто в PHP. Выполните file_get_contents() ( doc ) для URL-адреса API с необходимыми параметрами, а затем json_decode() ( doc ) для полученных данных.

Обратите внимание, что их TOS говорит, что эти данные должны в конечном итоге отображаться на карте Google. В противном случае вам нужно будет использовать другой сервис геокодирования.

Наконец, не забывайте перехват ошибок, обработку тайм-аутов и другие полезности. Вы не хотите бесконечно ждать, пока Google ответит вам данными. Несмотря на то, что они работают очень быстро, возникают проблемы с подключением и другие проблемы.

Редактировать: Очевидно, что требуется больше помощи, помимо моего объяснения выше, поэтому вот несколько быстрых кодов, чтобы помочь вам.

<?php
$address="1600 Amphitheatre Pkwy, Mountain View, CA";
$result=file_get_contents("http://maps.googleapis.com/maps/api/geocode/json?sensor=false&address=" . urlencode($address) );
$geocodedinfo=json_decode($result);

print_r($geocodedinfo);
?>

Опять же, это только для начала. На выходе вы увидите все, что было декодировано. То, что вы ищете, должно быть в этих:

$geocodedinfo['results'][0]['geometry']['location']['lat']
$geocodedinfo['results'][0]['geometry']['location']['lng']
2 голосов
/ 15 ноября 2010

Используйте Yahoo!Placefinder или один из других API геокодирования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...