java版 经纬度和屏幕坐标互相转换
来源:互联网 发布:华讯网络薪资 编辑:程序博客网 时间:2024/06/05 16:51
public class GoogleMapsAPIProjection{ private double PixelTileSize = 256d; private double DegreesToRadiansRatio = 180d / Math.PI; private double RadiansToDegreesRatio = Math.PI / 180d; private PointF PixelGlobeCenter; private double XPixelsToDegreesRatio; private double YPixelsToRadiansRatio; public GoogleMapsAPIProjection(double zoomLevel) { double pixelGlobeSize = this.PixelTileSize * Math.pow(2d, zoomLevel); this.XPixelsToDegreesRatio = pixelGlobeSize / 360d; this.YPixelsToRadiansRatio = pixelGlobeSize / (2d * Math.PI); double halfPixelGlobeSize = pixelGlobeSize / 2d; this.PixelGlobeCenter = new PointF(halfPixelGlobeSize, halfPixelGlobeSize,0d); } public PointF FromCoordinatesToPixel(PointF coordinates) { double x = Math.round(this.PixelGlobeCenter.getX() + (coordinates.getX() * this.XPixelsToDegreesRatio)); double f = Math.min( Math.max( Math.sin(coordinates.getY() * RadiansToDegreesRatio), -0.9999d), 0.9999d); double y = Math.round(this.PixelGlobeCenter.getY() + .5d * Math.log((1d + f) / (1d - f)) * -this.YPixelsToRadiansRatio); return new PointF(x, y, 0d); } public PointF FromPixelToCoordinates(PointF pixel) { double longitude = (pixel.getX() - this.PixelGlobeCenter.getY()) / this.XPixelsToDegreesRatio; double latitude = (2 * Math.atan(Math.exp( (pixel.getY() - this.PixelGlobeCenter.getY()) / -this.YPixelsToRadiansRatio)) - Math.PI / 2) * DegreesToRadiansRatio; return new PointF(latitude, longitude, 0d); }
}
调用 经纬度转屏幕坐标:
GoogleMapsAPIProjection gmap = new GoogleMapsAPIProjection(levelOfDetail);PointF out = gmap.FromCoordinatesToPixel(new PointF(longitude,latitude, 0f));
阅读全文
0 0
- java版 经纬度和屏幕坐标互相转换
- 墨卡托和经纬度坐标互相转换
- 【ArcGIS for Android】经纬度坐标、地图投影坐标、屏幕坐标互相转换
- 【ArcGIS for Android】经纬度坐标、地图投影坐标、屏幕坐标互相转换
- 经纬度转换为屏幕坐标
- 经纬度转换成屏幕坐标
- GPS经纬度转换屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换成屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- (转)经纬度坐标转换为屏幕坐标
- 经纬度坐标转换为屏幕坐标
- 经纬度坐标转换成屏幕坐标
- 经纬度坐标转换成屏幕坐标
- 各系地图坐标互相转换【JS版和Java版】
- 地理坐标、经纬度坐标与屏幕坐标的转换!
- centos6.5下如何搭建一个ftp服务器和使用客户端
- 安卓OOM和Bitmap图片二级缓存机制(一)
- 安卓OOM和Bitmap图片二级缓存机制(二)
- [LeetCode 解题报告]014. Longest Common Prefix
- FFmpeg的Android平台移植—编译篇
- java版 经纬度和屏幕坐标互相转换
- HTML学习-frameset和iframe
- java io流 write写入如何换行 讲解
- 1263: 逆转一个数中的位
- MySQL配置ODBC数据源
- 基于QWebView开发的浏览器通过需要证书认证网站的方法
- es6函数扩展(六)
- FFmpeg的Android平台移植—编译篇
- window下和Linux下启动,停止,重启mysql的命令