在重庆网站建设中,经常会用到用户的位置信息,主要又两种办法:
1、用户的ip来定位,只能定位到城市,但是要定位到详细的区县就不得行了
参考这篇文章:如何用ip定位
2、用html5的特性来定位,可以定位到用户的详细经纬度(当前页会有偏差),然后在用经纬度转换成省市区
1、先获取用户的经纬度,html前端js代码如下,注意,经过我们测试,网站必须要用https才能获取定位,http是无法定位的
<script type="text/javascript"> //必须整站都用https window.addEventListener('load', function() { if (navigator.geolocation) { navigator.geolocation.watchPosition(update,function(){ console.log('无法获取您的位置信息!'); }); } }, false); function update(position) { var lat = position.coords.latitude; var lng = position.coords.longitude; console.log('维度:' + lat + ', 经度:' + lng); } </script>
2、获取到用户的经纬度后,在用百度的api把经纬度转成省市区
百度文档地址:http://lbsyun.baidu.com/index.php?title=webapi/guide/webservice-geocoding-abroad
接口请求地址:
请求参数:
参数名 | 参数含义 | 类型 | 举例 | 默认值 | 是否必须 |
---|---|---|---|---|---|
location | 根据经纬度坐标获取地址。 | float | 38.76623,116.43213 | 无 | 是 |
coordtype | 坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度) 坐标系说明 | string | bd09ll、gcj02ll | bd09ll | 否 |
ret_coordtype | 可选参数,添加后返回国测局经纬度坐标或百度米制坐标 坐标系说明 | string | gcj02ll(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标) | bd09ll(百度经纬度坐标) | 否 |
radius | poi召回半径,允许设置区间为0-1000米,超过1000米按1000米召回。 | int | 500 | 1000 | 否 |
ak | 用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为“key” 申请ak | string | E4805d16520de693a3fe70 | 无 | 是 |
sn | 若用户所用ak的校验方式为sn校验时该参数必须 sn生成 | string | 无 | 否 | |
output | 输出格式为json或者xml | string | json或xml | xml | 否 |
callback | 将json格式的返回值通过callback函数返回以实现jsonp功能 | string | callback=showLocation(JavaScript函数名) | 无 | 否 |
poi_types | 可以选择poi类型召回不同类型的poi,例如poi_types=酒店,如想召回多个POI类型数据,可以‘|’分割 例如poi_types=酒店|房地产 不添加该参数则默认召回全部POI分类数据。poi分类 | string | poi_types=酒店 poi_types=酒店|房地产 | 无 | 否 |
extensions_poi | extensions_poi=0,不召回pois数据。 extensions_poi=1,返回pois数据(默认显示周边1000米内的poi),并返回sematic_description语义化数据。 | string | 0 | 无 | 否 |
extensions_road | 当取值为true时,召回坐标周围最近的3条道路数据。区别于行政区划中的street参数(street参数为行政区划中的街道,和普通道路不对应)。 | string | false、true | false | 否 |
extensions_town | 当取值为true时,行政区划返回乡镇级数据(town),仅国内召回乡镇数据。默认不访问。 | string | true | 无 | 否 |
language | 指定召回的行政区划语言类型。 召回行政区划语言list(全量支持的语言见示例)。 当language=local时,根据请求中坐标所对应国家的母语类型,自动选择对应语言类型的行政区划召回。 目前支持多语言的行政区划区划包含country、province、city、district | string | el gu en vi ca it iw sv eu ar cs gl id es en-GB ru sr nl pt tr tl lv en-AU lt th ro fil ta fr bg hr bn de hu fa hi pt-BR fi da ja te pt-PT ml ko kn sk zh-CN pl uk sl mr local | en,国内默认zh-CN | 否 |
language_auto | 当用户指定language参数时,是否自动填充行政区划。 1填充,0不填充。 填充:当服务按某种语言类别召回时,若某一行政区划层级的语言数据未覆盖,则按照“英文→中文→本地语言”类别行政区划数据对该层级行政区划进行填充,保证行政区划数据召回完整性。 | int | 0、1 | 无 | 否 |
返回结果参数:
名称 | 含义 | 类型 | |
---|---|---|---|
status | 返回结果状态值, 成功返回0,其他值请查看下方返回码状态表。 | int | |
location | 经纬度坐标 | object | |
lat | 纬度值 | float | |
lng | 经度值 | float | |
formatted_address | 结构化地址信息 | string | |
business | 坐标所在商圈信息,如 "人民大学,中关村,苏州街"。最多返回3个。 | string | |
addressComponent (注意,国外行政区划,字段仅代表层级) | country | 国家 | string |
country_code | 国家编码 | int | |
country_code_iso | 国家英文缩写(三位) | string | |
country_code_iso2 | 国家英文缩写(两位) | string | |
province | 省名 | string | |
city | 城市名 | string | |
city_level | 城市所在级别(仅国外有参考意义。国外行政区划与中国有差异,城市对应的层级不一定为『city』。country、province、city、district、town分别对应0-4级,若city_level=3,则district层级为该国家的city层级) | int | |
district | 区县名 | string | |
town | 乡镇名,需设置extensions_town=true时才会返回 | string | |
town_code | 乡镇id | string | |
street | 街道名(行政区划中的街道层级) | string | |
street_number | 街道门牌号 | string | |
adcode | 行政区划代码 | int | |
direction | 相对当前坐标点的方向,当有门牌号的时候返回数据 | string | |
distance | 相对当前坐标点的距离,当有门牌号的时候返回数据 | string | |
pois(周边poi数组) | addr | 地址信息 | string |
cp | 数据来源(已废弃) | string | |
direction | 和当前坐标点的方向 | string | |
distance | 离坐标点距离 | int | |
name | poi名称 | string | |
tag | poi类型,如’美食;中餐厅’。tag与poiType字段均为poi类型,建议使用tag字段,信息更详细。poi详细类别 | string | |
point | poi坐标{x,y} | float | |
tel | 电话 | int | |
uid | poi唯一标识 | string | |
zip | 邮编 | int | |
parent_poi | poi对应的主点poi(如,海底捞的主点为上地华联,该字段则为上地华联的poi信息。如无,该字段为空),包含子字段和pois基础召回字段相同。 | ||
roads | name | 周边道路名称 | string |
distance | 传入的坐标点距离道路的大概距离 | string | |
poiRegions | direction_desc | 请求中的坐标与所归属区域面的相对位置关系 | string |
name | 归属区域面名称 | string | |
tag | 归属区域面类型 | string | |
sematic_description | 当前位置结合POI的语义化结果描述。需设置extensions_poi=1才能返回。 | string | |
cityCode | 百度定义的城市id(正常更新与维护,但建议使用adcode) | int |