html5获取和使用坐标获得地址没有地图
问题描述:
我想得到更精确的用户abit比IP显示它的地址,所以我使用了HTML地理编码器让我的经验丰富 - 迄今为止这么好。不过,我想从这个地址得到地址,而不显示任何地图只是街道地址 - 城市 - 国家作为纯文本在后台做一些工作。就我看到的谷歌反向地理编码总是涉及显示地图。那么有没有办法解决这个问题?我可以使用下面的PHP函数,但我只是不能通过PHP的PHP 5,因为它是。html5获取和使用坐标获得地址没有地图
PHP
function GetAddress($lat, $lng)
{
// Construct the Google Geocode API call
//
$URL = "http://maps.googleapis.com/maps/api/geocode/json?latlng=${lat},${lng}&sensor=false";
// Extract the location lat and lng values
//
$data = file($URL);
foreach ($data as $line_num => $line)
{
if (false != strstr($line, "\"formatted_address\""))
{
$addr = substr(trim($line), 22, -2);
break;
}
}
return $addr;
}
$address = GetAddress();
print_r($address);
?>
答
我想借此将是一个类似于此...(测试和工程)
<div id='geo_results'></div>
<script type='text/javascript' charset='utf-8'>
window.onload=function(){
navigator.geolocation.getCurrentPosition(geo_success, geo_failure);
function geo_success(pos){
var lat=pos.coords.latitude;
var lng=pos.coords.longitude;
var xhr=new XMLHttpRequest();
xhr.onreadystatechange = function() {
if(xhr.readyState==4 && xhr.status==200){
geo_callback.call(this, xhr.responseText);
}
}
xhr.open('GET', '/fetch.php?lat='+lat+'&lng='+lng, true);
xhr.send(null);
}
function geo_failure(){
alert('failed');
}
function geo_callback(r){
var json=JSON.parse(r);
/* process json data according to needs */
document.getElementById('geo_results').innerHTML=json.results[0].formatted_address;
console.info('Address: %s',json.results[0].formatted_address);
}
}
</script>
和PHP页面将请求发送到谷歌的做法通过卷曲
/* fetch.php */
<?php
/*
Modified only to filter supplied variables to help avoid nasty surprises
*/
$options=array('flags' => FILTER_FLAG_STRIP_HIGH | FILTER_FLAG_ENCODE_HIGH);
$lat=filter_input(INPUT_GET, 'lat', FILTER_SANITIZE_ENCODED, $options);
$lng=filter_input(INPUT_GET, 'lng', FILTER_SANITIZE_ENCODED, $options);
$url="http://maps.googleapis.com/maps/api/geocode/json?latlng={$lat},{$lng}&sensor=false";
$curl=curl_init($url);
/*
If CURLOPT_RETURNTRANSFER is set to FALSE
there is no need to echo the response
at the end
*/
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_AUTOREFERER, TRUE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, TRUE);
curl_setopt($curl, CURLOPT_FRESH_CONNECT, TRUE);
curl_setopt($curl, CURLOPT_FORBID_REUSE, TRUE);
curl_setopt($curl, CURLINFO_HEADER_OUT, FALSE);
curl_setopt($curl, CURLOPT_USERAGENT, 'curl-geolocation');
curl_setopt($curl, CURLOPT_CONNECTTIMEOUT, 15);
curl_setopt($curl, CURLOPT_TIMEOUT, 90);
curl_setopt($curl, CURLOPT_HEADER, FALSE);
$response=curl_exec($curl);
echo $response;
?>
即时通讯没有得到任何东西,尝试document.write(json)里面的geo_回调检查整个结果,但仍然没有什么 – mrahmat
iam不知道为什么,它仍然没有显示任何东西:( – mrahmat
控制台告诉你什么?你有没有正确的路径“fetch.php”? – RamRaider