润雪观点

将想法与焦点,与您一起共享

润雪观点

重庆网站建设html定位获取用户的经纬度,转成省市区

2021-03-15 润雪科技:重庆网站建设公司 浏览器:1456

在重庆网站建设中,经常会用到用户的位置信息,主要又两种办法:

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

接口请求地址:

http://api.map.baidu.com/reverse_geocoding/v3/?ak=您的ak&output=json&coordtype=wgs84ll&location=31.225696563611,121.49884033194  //GET请求

请求参数:

参数名参数含义类型举例默认值是否必须
location根据经纬度坐标获取地址。
float38.76623,116.43213

lat<纬度>,lng<经度>

coordtype坐标的类型,目前支持的坐标类型包括:bd09ll(百度经纬度坐标)、bd09mc(百度米制坐标)、gcj02ll(国测局经纬度坐标,仅限中国)、wgs84ll( GPS经纬度) 坐标系说明stringbd09ll、gcj02llbd09ll

ret_coordtype可选参数,添加后返回国测局经纬度坐标或百度米制坐标 坐标系说明stringgcj02ll(国测局坐标,仅限中国)、bd09mc(百度墨卡托坐标)bd09ll(百度经纬度坐标)
radius
poi召回半径,允许设置区间为0-1000米,超过1000米按1000米召回。
int500
1000
ak用户申请注册的key,自v2开始参数修改为“ak”,之前版本参数为“key” 申请akstringE4805d16520de693a3fe70
sn若用户所用ak的校验方式为sn校验时该参数必须 
sn生成
string

output输出格式为json或者xmlstringjson或xmlxml
callback将json格式的返回值通过callback函数返回以实现jsonp功能stringcallback=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、truefalse
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不填充。
填充:当服务按某种语言类别召回时,若某一行政区划层级的语言数据未覆盖,则按照“英文→中文→本地语言”类别行政区划数据对该层级行政区划进行填充,保证行政区划数据召回完整性。
int0、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
乡镇idstring
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


本文由重庆网站建设公司润雪科技原创,文章地址:/news/id/1829.html