以下代码from this post对我有用,但它会返回完整地址(街道号码,街道名称,城市,州,邮政编码,国家/地区)。有没有办法让它只返回街道号码和名称而不是完整的地址?谷歌没有多大帮助。
<?
function getaddress($lat,$lng)
{
$url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='.trim($lat).','.trim($lng).'&sensor=false';
$json = @file_get_contents($url);
$data=json_decode($json);
$status = $data->status;
if($status=="OK") {
return $data->results[0]->formatted_address;
} else {
return false;
}
}
$lat= 26.754347; //latitude
$lng= 81.001640; //longitude
$address= getaddress($lat,$lng);
if($address) {
echo $address;
} else {
echo "Not found";
}
?>
答案 0 :(得分:2)
经过大量的搜索和反复试验后,我设法得到了我需要的工作。如果有更有效的方法来做到这一点,我会喜欢这些反馈。
<?php
function getAddress($lat, $lon) {
$url = "http://maps.googleapis.com/maps/api/geocode/json?latlng=".
$lat.",".$lon."&sensor=false";
$json = @file_get_contents($url);
$data = json_decode($json);
$status = $data->status;
$address = '';
if($status == "OK"){
foreach($data->results[0]->address_components as $address_component) {
if(in_array('street_number', $address_component->types)) {
$street_number = $address_component->long_name;
}
if(in_array('route', $address_component->types)) {
$route = $address_component->long_name;
}
}
}
return $street_number." ".$route;
}
echo getAddress($lat,$lon);
?>
答案 1 :(得分:0)
<!DOCTYPE HTML>
<head>
<script src="http://code.jquery.com/jquery-2.1.4.min.js"></script>
<script type="text/javascript">
var watchID;
var geoLoc;
// Get the latitude & longitude;
function showLocation(position) {
var latitude = position.coords.latitude;
var longitude = position.coords.longitude;
getAddress(latitude, longitude);
}
// Handel any errors that my come
function errorHandler(err) {
if(err.code == 1) {
alert("Error: Access is denied!");
}else if( err.code == 2) {
alert("Error: Position is unavailable!");
}
}
// Get the location of the current location settings
function getLocation(){
$("#output").html("Getting Location. Please Wait...");
if(navigator.geolocation){
// timeout at 60000 milliseconds (60 seconds)
var options = {enableHighAccuracy:true,maximumAge:30000,timeout:27000};
geoLoc = navigator.geolocation;
watchID = geoLoc.watchPosition(showLocation, errorHandler, options);
}else{
alert("Sorry, browser does not support geolocation!");
}
}
// Get the address
function getAddress(latitude, longitude){
$.get("http://maps.google.com/maps/api/geocode/xml?latlng=" + latitude + "," + longitude + "&sensor=false", function(data){
$(data).find("formatted_address").each(function(){
var unitData = $(this).text();
$("#output").html("Latitude : " + latitude + "<br> Longitude: " + longitude + "<br>");
unitData = unitData.split(',');
var street_number = unitData[0];
var street_address = unitData[1];
$("#output").append(street_number);
$("#output").append(street_address);
return false;
});
});
}
</script>
</head>
<html>
<body>
<form>
<input type="button" onclick="getLocation();" value="Get Location"/>
</form>
<div id="output"></div>
</body>
</html>