常见坐标系
-
CGCS2000,天地图坐标系,与GPS一样,偏移较小
-
GCJ02,火星坐标系,将GPS坐标做偏移之后的数据,国测局坐标(国内地图推荐,如高德、腾讯)
-
EPSG:3857,等同于900913,由墨卡托投影而来(最初 Web Mercator 被拒绝分配EPSG 代码。于是大家普遍使用 EPSG:900913(Google的数字变形) 的非官方代码来代表它)
-
BD-09:,百度地图使用坐标系
-
WGS84(World Geodetic System 1984)是一个全球定位系统(GPS)使用的地理坐标系统,也是目前国际上广泛使用的地球参考框架。WGS84 坐标系统是由美国国防部开发的,它提供了一个全球统一的坐标标准,用于定位和导航。
-
EPSG:4326,等同于WGS84坐标系
微信 js sdk
使用微信内置地图查看位置接口
wx.openLocation({
latitude: 0, // 纬度,浮点数,范围为90 ~ -90
longitude: 0, // 经度,浮点数,范围为180 ~ -180。
name: '', // 位置名
address: '', // 地址详情说明
scale: 1, // 地图缩放级别,整型值,范围从1~28。默认为最大
infoUrl: '' // 在查看位置界面底部显示的超链接,可点击跳转
});
获取地理位置接口
wx.getLocation({
type: 'wgs84', // 默认为wgs84的gps坐标,如果要返回直接给openLocation用的火星坐标,可传入'gcj02'
success: function (res) {
var latitude = res.latitude; // 纬度,浮点数,范围为90 ~ -90
var longitude = res.longitude; // 经度,浮点数,范围为180 ~ -180。
var speed = res.speed; // 速度,以米/每秒计
var accuracy = res.accuracy; // 位置精度
}
});
腾讯地图api 转换
发现用了腾讯api转换精度还是有问题,最后上网找
function transformFromBaiduToGCJ (latitude, longitude) {
var xPi = 3.14159265358979324 * 3000.0 / 180.0;
var x = longitude - 0.0065;
var y = latitude - 0.006;
var z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * xPi);
var theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * xPi);
var a_latitude = z * Math.sin(theta);
var a_longitude = z * Math.cos(theta);
return {
latitude: a_latitude,
longitude: a_longitude
};
};
还得用这么古老的方式