前端h5 获取经纬度并转换为地市

转载:
https://segmentfault.com/a/1190000009249162

介绍
本文将简述一下如何通过HTML5和百度地图开放平台提供的API来实现对浏览器的定位,同时记录了遇到的问题和解决方案。实现效果为显示出用户所在的省市,即: XXX省 XXX市。

实现思路
利用HTML5 提供的API获取到用户的经纬度信息,再将用户的经纬度信息传到百度地图开放平台,百度地图开放平台根据提供的坐标信息返回当前的省市。

兼容性及依赖
兼容性:Internet Explorer 9+, Firefox, Chrome, Safari 和 Opera 都支持Geolocation(地理定位).

依赖:不依赖于任何库和框架

HTML5 API
使用HTML5 Geolocation API的getCurrentPosition() 方法能够获取用户的经纬度信息。

getCurrentPosition() 常用参数有两个,一个是成功时执行,一个时错误处理。如果getCurrentPosition()运行成功,则向第一个参数中规定的函数返回一个coordinates对象,用于提供位置信息。

coordinates对象属性如下:

属性 描述
coords.latitude 十进制数的纬度
coords.longitude 十进制数的经度
coords.accuracy 位置精度
coords.altitude 海拔,海平面以上以米计
coords.altitudeAccuracy 位置的海拔精度
coords.heading 方向,从正北开始以度计
coords.speed 速度,以米/每秒计
timestamp 响应的日期/时间
其中,latitude、longitude 以及 accuracy 属性 是固定返回的属性,其他属性在可用状态下才会一起返回。

如果getCurrentPosition()运行失败,则向第二个参数中规定的函数返回一个error对象,用于提供错误信息。

属性 描述
code 1: PERMISSION_DENIED,用户不允许地理定位
2: POSITION_UNAVAILABLE,无法获取当前位置
3:TIMEOUT,操作超时
message 返回相应的错误信息
下例是一个简单的地理定位实例,可返回用户位置的经度和纬度:

function getLocation()
{
if (navigator.geolocation)
{
navigator.geolocation.getCurrentPosition(showPosition, showError);
}
else
{
console.log(“该浏览器不支持获取地理位置。”);
}
}

function showPosition(position)
{
console.log("纬度: " + position.coords.latitude +
" 经度: " + position.coords.longitude);
}

function showError(error) {
console.log(error);
}
参考资料:

菜鸟教程

百度地图API
命名空间

百度地图API使用BMap作为命名空间,所有类均在该命名空间之下,比如:BMap.Map、BMap.Control、BMap.Overlay。

使用方法

首先,我们需要引入百度地图API文件:

//参数v表示您加载API的版本,使用JavaScript APIv1.4及以前版本可使用此方式引用。 //使用JavaScript APIv2.0请先申请密钥ak,按此方式引用。

然后,我们再创建一个地理点坐标:

var point = new BMap.Point(116.404, 39.915);
构造函数 描述
Point(lng: Number, lat: Number) 以指定的经度和纬度创建一个地理点坐标
最后,我们可以通过创建好的点坐标获取到用户的地址解析:

var myGeo = new BMap.Geocoder();
myGeo.getLocation(point, function (result) {
console.log(result.addressComponents.province + ’ ’ + result.addressComponents.city);
}
构造函数 描述
Geocoder() 创建一个地址解析器的实例
方法 返回值 描述
getPoint(address: String, callback: Function, city: String) none 对指定的地址进行解析。如果地址定位成功,则以地址所在的坐标点Point为参数调用回调函数。否则,回调函数的参数为null。city为地址所在的城市名,例如“北京市”
getLocation(point: Point, callback: Function, options: LocationOptions) none 对指定的坐标点进行反地址解析。如果解析成功,则回调函数的参数为GeocoderResult对象,否则回调函数的参数为

你可能感兴趣的:(html5)