
php根据经纬度获取地理位置
这种功能,只能调用第三方的接口了,百度地图API就有这个接口addressComponents,逆地址解析,参考方法如下:
<GeocoderSearchResponse>
<status>OK</status>
<result>
<location>
<lat>38.990998</lat>
<lng>103.645966</lng>
</location>
<formatted_address>甘肃省武威市民勤县</formatted_address>
<business/>
<addressComponent>
<streetNumber/>
<street/>
<district>民勤县</district>
<city>武威市</city>
<province>甘肃省</province>
</addressComponent>
<cityCode>118</cityCode>
</result>
</GeocoderSearchResponse>
地理(Geography),是世界或某一地区的自然环境(山川、气候等)及社会要素的统称。“地理”一词最早见于中国《易经》。古代的地理学主要探索关于地球形状、大小有关的测量方法,或对已知的地区和国家进行描述。
地理学是研究地球表面的地理环境中各种自然现象和人文现象,以及它们之间相互关系的学科。地理是一门综合性的基础学科。
gaode_get_addr_by_latlng(lat+','+lon,function(a,b){
txt.set('value', b.formatted_address);
});
function gaode_get_addr_by_latlng(latlng, cbfunc) {
var arr = (''+latlng).split(',');
latlng = arr[1] + ',' + arr[0]; // gaode 是 lon 在前 lat 在后
var url = 'http://restapi.amap.com/v3/geocode/regeo?location='+encodeURIComponent(latlng)+'&radius=1000&extensions=all&key='+hc_gaode_key;
hc_xhr(hc_gc_proxy(url), false, function(data){
// json 数据
//alert(data.regeocode.formatted_address);
if( data && 'object' == typeof(data.regeocode) ) {
// 返回的数据中有 pois 周边名称? 也有 formated_address, 等
if( 'function' == typeof(cbfunc) ) {
var loc = [];
if( data.regeocode.addressComponent && data.regeocode.addressComponent.streetNumber && data.regeocode.addressComponent.streetNumber.location ) {
loc = (data.regeocode.addressComponent.streetNumber.location + '').split(',');
}
cbfunc.call(null, false,
{
location: { // TODO: 纠偏此数据
type: 'google',
lat: loc[1],
lng: loc[0]
},
formatted_address: data.regeocode.formatted_address, //‘详细地址描述’
business: data.regeocode.business, // '周围商圈'
addressComponent: {
city: data.regeocode.addressComponent.city, //’城市名称’,
district: data.regeocode.addressComponent.district, //‘区县名称’,
province: data.regeocode.addressComponent.province, //’省份名称’,
street: data.regeocode.addressComponent.township, //‘街道名称’,
streetNumber: data.regeocode.addressComponent.streetNumber.street // '门牌号码'
},
cityCode: data.regeocode.cityCode, // '城市代码'
pois: data.regeocode.pois // 周边
});
}
} else {
if( 'function' == typeof(cbfunc) )
cbfunc.call(null, 'data format error!');
}
}, function(err){
if( 'function' == typeof(cbfunc) )
cbfunc.call(null, err);
});
}