【易客吧】_全网激活码总代_激活码商城

您现在的位置是:首页 > 热门资讯 > 正文

热门资讯

地图坐标系转换,地图经纬度转换,地址转换经纬度

qingfeng1262023-08-05热门资讯93

地图坐标系转换:解析WGS84,GCJ02,BD09三种坐标系


在进行地理信息相关的开发时,经常需要进行地图坐标系之间的转换。常用的坐标系包括WGS84、GCJ02和BD09。本文将分别解析这三种坐标系,并介绍它们之间的转换方法。

WGS84坐标系是一种地球坐标系,它是由美国国防部制定的一种标准,现在已经成为全球卫星定位系统使用的标准。在WGS84坐标系中,经度采用的是以0°经线为基准的正负180°经线,纬度采用的是以赤道为基准的正负90°纬线。

GCJ02坐标系是一种对WGS84坐标系的加密算法。由于国家安全原因,中国政府在国内测绘地图时使用了这种算法。GCJ02坐标系和WGS84坐标系在中国境内的经纬度范围是一致的,但是会有一定的偏移量。

BD09坐标系是一种在GCJ02坐标系基础上又进行了加密的坐标系,它是由百度公司推出的一种坐标系。在中国境内,使用百度地图获取的GPS坐标就是BD09坐标系。

地址转换经纬度:利用地图API实现地址转经纬度

在WEB开发中,常常需要根据输入的地址,获取该地址的经纬度信息,以便在地图上显示相关信息。在实现这一功能时,可以使用各大地图API提供的地址转经纬度功能。

Google Maps API提供了geocoding服务,可以将用户输入的地址转换为对应的经纬度信息。用户只需要将地址作为参数传入geocoder.geocode()方法即可。

百度地图API也提供类似的功能,用户可以使用其提供的geocoding服务获取经纬度信息。代码示例如下:

var myGeo=new BMap.Geocoder();
myGeo.getPoint("北京市海淀区上地十街10号", function(point){
if (point) {
//point变量即为经纬度信息
}
}, "北京市");

高德地图API也提供了geocoding服务,同样可以将地址转换为经纬度信息。代码示例如下:

AMap.service('AMap.Geocoder',function(){
var geocoder=new AMap.Geocoder();
geocoder.getLocation('北京市海淀区上地十街10号', function(status, result) {
if (status==='complete' && result.info==='OK') {
var point=result.geocodes[0].location;
//point变量即为经纬度信息
}
});
});

地图经纬度转换:实现经纬度之间的相互转换

在进行地图开发时,经常需要对经纬度信息进行转换。例如,在地图上标注坐标点时,需要将用于存储的经纬度信息转换为屏幕坐标信息以便于绘制。

下面分别介绍WGS84、GCJ02、BD09三种坐标系中经纬度信息的转换方法。

WGS84坐标系到GCJ02坐标系的转换方法:

首先,将经度值和纬度值转换为以度为单位的值。

1. 将经度值和纬度值转换为以弧度为单位的值,如下所示:

var radLat=lat * Math.PI / 180.0;
var radLon=lng * Math.PI / 180.0;

2. 根据以下公式计算转换后的经纬度信息:

var a=6378245.0;
var ee=0.00669342162296594323;
var dLat=transformLat(lng - 105.0, lat - 35.0);
var dLon=transformLon(lng - 105.0, lat - 35.0);
var radLat=lat / 180.0 * Math.PI;
var magic=Math.sin(radLat);
magic=1 - ee * magic * magic;
var sqrtMagic=Math.sqrt(magic);
dLat=(dLat * 180.0) / ((a * (1 - ee)) / (magic * sqrtMagic) * Math.PI);
dLon=(dLon * 180.0) / (a / sqrtMagic * Math.cos(radLat) * Math.PI);
var mgLat=lat + dLat;
var mgLng=lng + dLon;

3. 其中,transformLat()和transformLon()方法的实现如下:

function transformLat(x, y) {
var lat=-100.0 + 2.0 * x + 3.0 * y + 0.2 * y * y + 0.1 * x * y + 0.2 * Math.sqrt(Math.abs(x));
lat +=(20.0 * Math.sin(6.0 * x * Math.PI) + 20.0 * Math.sin(2.0 * x * Math.PI)) * 2.0 / 3.0;
lat +=(20.0 * Math.sin(y * Math.PI) + 40.0 * Math.sin(y / 3.0 * Math.PI)) * 2.0 / 3.0;
lat +=(160.0 * Math.sin(y / 12.0 * Math.PI) + 320.0 * Math.sin(y * Math.PI / 30.0)) * 2.0 / 3.0;
return lat;
}

function transformLon(x, y) {
var lon=300.0 + x + 2.0 * y + 0.1 * x * x + 0.1 * x * y + 0.1 * Math.sqrt(Math.abs(x));
lon +=(20.0 * Math.sin(6.0 * x * Math.PI) + 20.0 * Math.sin(2.0 * x * Math.PI)) * 2.0 / 3.0;
lon +=(20.0 * Math.sin(x * Math.PI) + 40.0 * Math.sin(x / 3.0 * Math.PI)) * 2.0 / 3.0;
lon +=(150.0 * Math.sin(x / 12.0 * Math.PI) + 300.0 * Math.sin(x / 30.0 * Math.PI)) * 2.0 / 3.0;
return lon;
}

GCJ02坐标系到BD09坐标系的转换方法:

首先,将经度值和纬度值转换为以度为单位的值。

1. 根据以下公式计算转换后的经纬度信息:

var x_pi=3.14159265358979324 * 3000.0 / 180.0;
var x=lng, y=lat;
var z=Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
var theta=Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
var bdLng=z * Math.cos(theta) + 0.0065;
var bdLat=z * Math.sin(theta) + 0.006;

2. 其中,x_pi表示π的值,lng、lat分别表示经度值和纬度值,bdLng、bdLat分别表示转换后的经度值和纬度值。

BD09坐标系到GCJ02坐标系的转换方法:

首先,将经度值和纬度值转换为以度为单位的值。

1. 根据以下公式计算转换后的经纬度信息:

var x_pi=3.14159265358979324 * 3000.0 / 180.0;
var x=lng - 0.0065, y=lat - 0.006;
var z=Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * x_pi);
var theta=Math.atan2(y, x) - 0.000003 * Math.cos(x * x_pi);
var gcjLng=z * Math.cos(theta);
var gcjLat=z * Math.sin(theta);

2. 其中,x_pi表示π的值,lng、lat分别表示经度值和纬度值,gcjLng、gcjLat分别表示转换后的经度值和纬度值。

若对本页面资源感兴趣,请点击下方或右方图片,注册登录后

搜索本页相关的【资源名】【软件名】【功能词】或有关的关键词,即可找到您想要的资源

如有其他疑问,请咨询右下角【在线客服】,谢谢支持!

地图坐标系转换,地图经纬度转换,地址转换经纬度 第1张

发表评论

评论列表

  • 这篇文章还没有收到评论,赶紧来抢沙发吧~
欢迎你第一次访问网站!