PHP скрипт местами помогает - PullRequest
2 голосов
/ 12 декабря 2010

Я читал http://code.google.com/apis/maps/articles/phpsqlsearch.html, чтобы получить SQL / Math.Я написал небольшой скрипт php, но ничего не получил.

    <?php
$db_host = "localhost";
$db_username = "root"; 
$db_pass = "";
$db_name = "places";

mysql_connect("$db_host","$db_username","$db_pass") or die ("could not connect to mysql");
mysql_select_db("$db_name") or die ("no database");

$lat = "37";
$lon = "-122";
$radius = "25";
$sql = mysql_query("SELECT id, name, ( 3959 * acos( cos( radians('$lat') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('$lon') ) + sin( radians('$lat') ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < '$radius' ORDER BY distance LIMIT 0 , 20") or die("error");

$nearby_check = mysql_num_rows($sql); 
if ($nearby_check > 0)
{
    while($row = mysql_fetch_array($sql))
    {
        $name = $row["name"];
        echo $name . '<br />';
    }
}
else
{
    echo 'No Places found nearby';  
}
?>

Структура базы данных и данные те же, что и в статье кода Google.

Это мой скрипт Php.Что с этим не так?Я думаю, что это может быть проблема SQL.Не совсем уверен.Это сообщение с января 2008 года. Может быть, что-то изменилось?

Ответы [ 2 ]

1 голос
/ 19 декабря 2010

http://www.geonames.org/export/

Используйте geonames.org, чтобы получить то, что вы хотите. что находится рядом с местами.

Этот сервер никогда не был выключен. Я проверял это долгое время, в отличие от http://webservicex.net.

Вы можете использовать его как в JavaScript, так и в PHP.

http://booking.com использует подобные сервисы для отображения отелей, аэропортов и т. Д. Рядом с отелем.

Я использовал этот сервис для одного из моих проектов.

geonames предоставляет дамп базы данных, и я надеюсь, что они периодически его обновляют.

Вы можете найти больше информации на их сайте.

http://www.geonames.org/export/web-services.html

http://forum.geonames.org/gforum/posts/list/499.page

0 голосов
/ 11 июня 2018
<?php
require_once('config.php'); 

$lat = "4.2709781";
$lng = "-120.2881378";
$radius = "10";

$req = $bdd ->prepare("SELECT id, name, lat, lng, ( 6371 * acos( cos( radians('$lat') ) * cos( radians( lat) ) * cos( radians( lng) - radians('$lng') ) + sin( radians('$lat') ) * sin( radians( lat) ) ) ) AS distance FROM markertable HAVING distance < '$radius' ORDER BY distance LIMIT 0 , 40");

$req->execute();

$datas = array();
$i=0;

while($tmpData = $req->fetch()) {
    $datas[$i]['id'] = utf8_encode($tmpData['id']);
    $datas[$i]['name'] = utf8_encode($tmpData['name']);
    $datas[$i]['lat'] = utf8_encode($tmpData['lat']);
    $datas[$i]['lng'] = utf8_encode($tmpData['lng']);
    $datas[$i]['distance'] = utf8_encode($tmpData['distance']);
    $i++;
}

$jsonOutPut = json_encode(array('markers'=>$datas));
echo $jsonOutPut;
$bdd = null;    

?>

...