1.常用坐标类型

BD09-百度坐标
GCJ-02-火星坐标/国测局坐标/国内坐标/投影坐标
WGS84-国际坐标/GPS坐标/地球坐标/地理坐标

2.坐标常识(自己补充的知识,不想看的跳过)

BD09等时地图厂商通过自己的加密算法再次加密的GCJ-02坐标,和真实坐标约相差百米
GCJ-02是国际加密WGS84坐标,原用于纸质平面地图
WGS84是真实坐标,一般不会直接使用,但所有地图坐标都能与之直接转换。

3.坐标对应地图

  • BD09
    百度地图

  • GCJ-02
    谷歌地图,soso地图,腾讯地图,高德地图,阿里云地图,灵图地图

  • 搜狗坐标
    搜狐搜狗地图

  • 图吧坐标
    图吧地图

4.转换(坐标系转换)

注意,WGS84是真实坐标,此坐标不会被直接使用。

火星坐标和百度坐标的相互转换

以下摘自:https://www.2cto.com/kf/201608/537533.html

 /*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法 将 GCJ-02 坐标转换成 BD-09 坐标* * @param gg_lat* @param gg_lon* @return*/public static Gps gcj02_To_Bd09(double gg_lon, double gg_lat) {double x = gg_lon, y = gg_lat;double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * pi);double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * pi);double bd_lon = z * Math.cos(theta) + 0.0065;double bd_lat = z * Math.sin(theta) + 0.006;return new Gps(bd_lon, bd_lat);}/*** 火星坐标系 (GCJ-02) 与百度坐标系 (BD-09) 的转换算法   将 BD-09 坐标转换成GCJ-02 坐标 * * @param bd_lon* @param bd_lat* @return*/public static Gps bd09_To_Gcj02(double bd_lon, double bd_lat) {double x = bd_lon - 0.0065, y = bd_lat - 0.006;double z = Math.sqrt(x * x + y * y) - 0.00002 * Math.sin(y * pi);double theta = Math.atan2(y, x) - 0.000003 * Math.cos(x * pi);double gg_lon = z * Math.cos(theta);double gg_lat = z * Math.sin(theta);return new Gps(gg_lon, gg_lat);}//Gps类public static class Gps {public double lat;public double lon;public Gps(double lon, double lat) {this.lat = lat;this.lon = lon;}public void print() {System.out.println(this.lon + "," + this.lat);}}

搜狗坐标转换真实坐标(这方面资料比较少,只找到一个网页端的代码,有兴趣的参考一下,我这里就不贴了)
http://blog.csdn.net/zeeeitch/article/details/51479353

图吧坐标和gps坐标的转换没有找到

百度坐标,火星坐标转真实坐标
这是商业机密,有其他人推导的算法,只在知乎上找到了一段python代码,因为不是博客,时效比较短,所以贴一下。可以作为参考:
https://www.zhihu.com/question/55755503/answer/163519277

import math
import json
#椭球体参数设置
x_pi = 3.14159265358979324 * 3000.0 / 180.0
pi = 3.1415926535897932384626  # π
a = 6378245.0  # 长半轴
ee = 0.00669342162296594323  # 扁率
def bd09togcj02(bd_lon, bd_lat):
"""
百度坐标系(BD-09)转火星坐标系(GCJ-02)
:param bd_lat:百度坐标纬度
:param bd_lon:百度坐标经度
:return:转换后的坐标列表形式
"""
x = bd_lon - 0.0065
y = bd_lat - 0.006
z = math.sqrt(x * x + y * y) - 0.00002 * math.sin(y * x_pi)
theta = math.atan2(y, x) - 0.000003 * math.cos(x * x_pi)
gg_lng = z * math.cos(theta)
gg_lat = z * math.sin(theta)
return [gg_lng, gg_lat]def gcj02towgs84(lng, lat):
"""
GCJ02(火星坐标系)转GPS84
:param lng:火星坐标系的经度
:param lat:火星坐标系纬度
:return:
"""
#if out_of_china(lng, lat):
# return lng, lat
dlat = transformlat(lng - 105.0, lat - 35.0)
dlng = transformlng(lng - 105.0, lat - 35.0)
radlat = lat / 180.0 * pi
magic = math.sin(radlat)
magic = 1 - ee * magic * magic
sqrtmagic = math.sqrt(magic)
dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * pi)
dlng = (dlng * 180.0) / (a / sqrtmagic * math.cos(radlat) * pi)
mglat = lat + dlat
mglng = lng + dlng
return [lng * 2 - mglng, lat * 2 - mglat]def transformlat(lng, lat):
ret = -100.0 + 2.0 * lng + 3.0 * lat + 0.2 * lat * lat + \
0.1 * lng * lat + 0.2 * math.sqrt(math.fabs(lng))
ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 *
math.sin(2.0 * lng * pi)) * 2.0 / 3.0
ret += (20.0 * math.sin(lat * pi) + 40.0 *
math.sin(lat / 3.0 * pi)) * 2.0 / 3.0
ret += (160.0 * math.sin(lat / 12.0 * pi) + 320 *
math.sin(lat * pi / 30.0)) * 2.0 / 3.0
return retdef transformlng(lng, lat):
ret = 300.0 + lng + 2.0 * lat + 0.1 * lng * lng + \
0.1 * lng * lat + 0.1 * math.sqrt(math.fabs(lng))
ret += (20.0 * math.sin(6.0 * lng * pi) + 20.0 *
math.sin(2.0 * lng * pi)) * 2.0 / 3.0
ret += (20.0 * math.sin(lng * pi) + 40.0 *
math.sin(lng / 3.0 * pi)) * 2.0 / 3.0
ret += (150.0 * math.sin(lng / 12.0 * pi) + 300.0 *
math.sin(lng / 30.0 * pi)) * 2.0 / 3.0
return retlng = 128.543
lat = 37.065
result2 = bd09togcj02(lng, lat)
print result2
#读取位置数据
import xlrdalldata= xlrd.open_workbook(r'C:\Users\Administrator\Desktop\20170321.xlsx')table = alldata.sheets()[0]
lngall=table.col_values(20)[1:len(table.col_values(20))]
latall=table.col_values(21)[1:len(table.col_values(21))]
#百度坐标转火星坐标
lngcj02=[]
latcj02=[]
for i in range(0,len(lngall)):
temp=bd09togcj02(lngall[i],latall[i])
lngcj02.append(temp[0])
latcj02.append(temp[1])
#火星坐标转WGS84
lng84=[]
lat84=[]
for i in range(0,len(lngcj02)):
temp=gcj02towgs84(lngcj02[i],latcj02[i])
lng84.append(temp[0])
lat84.append(temp[1])
#保存文件
import csv
csvfile=file('C:\Users\Administrator\Desktop\location.csv','wb')
writer = csv.writer(csvfile)
writer.writerow(['longitude','latitude'])
data = [  lng84,lat84]
writer.writerows(data)
csvfile.close()
print 'end'

android常用地图坐标转换相关推荐

  1. android常用地图坐标转换,室内地图Android 坐标转换说明 - 蜂鸟云

    坐标转化工具说明 Fengmap Android SDK支持定位坐标转换Fengmap坐标的功能. 坐标系说明 Fengmap地图坐标系为全球坐标系统,全球坐标系统下地理元素具有唯一的控件位置.真实的 ...

  2. Android 高德地图坐标转换

    1.其他坐标系转到高德坐标系 支持GPS/Mapbar/Baidu等多种类型坐标在高德地图上使用.参见类CoordinateConverter. CoordinateConverter convert ...

  3. java常用地图坐标系转换工具类,支持谷歌,腾讯,百度等主流的地理坐标转换

    package com.shen.springboot.redis.util;import java.util.ArrayList; import java.util.HashMap; import ...

  4. android百度地图单点定位_Android百度地图实现搜索和定位及自定义图标绘制并点击时弹出泡泡...

    一.问题描述 上一次我们使用百度地图实现基本的定位功能,接下来我们继续实现搜索和定位,并使用LocationOverlay绘制定位位置,同时展示如何使用自定义图标绘制并点击时弹出泡泡 如图所示: 二. ...

  5. android 地球坐标 火星坐标系,Android LBS地图开发:地球地理GPS坐标系经纬度偏移偏差...

    Android LBS地图开发基础知识之地球地理GPS坐标系经纬度偏移偏差 通常,我们所说的地球地理经纬度是WGS-84坐标系(World Geodetic System-1984 Coordinat ...

  6. Android 高德地图(带有定位和点击显示经度纬度)

    Android高德地图测试,如下: 1.Android高德地图Demo地址下载:       下载android高德地图Demo 1.2 Android定位SDK 一键下载 1.3 下载好的文件zip ...

  7. Android常用面试题大全

    1.TCP和UDP之间的区别?什么是URL ? TCP被称为用户数据报协议;UDP被称为信息传输控制协议;URL被称为统一资源定位符,通过统一资源定位符可以唯一定位到互联网上的某个资源(图片.视频.音 ...

  8. Android学习--02(猜猜我的星座App源码+Android常用控件TextView+EditText+Button+ImangeView+DatePicker+App间通信+跳转页面)

    猜猜我的星座App 1 Android常用控件 1.1 TextView控件 1.1.1 简介 1.1.2属性 1.1.3 扩展属性 1.1.4 TextView的使用方法 1.1.5总结 1.2 E ...

  9. android 常用框架整理

    文章目录 UI 框架 WebView 框架 具体内容 UI 卫星菜单 节选器 下拉刷新 模糊效果 HUD与Toast 进度条 UI其他 动画 网络相关 网络连接 网络测试 图像获取 响应式编程 地图 ...

  10. Android 常用开发功能 博客导航

    转载地址:http://blog.csdn.net/ciqing123/article/details/52931663?locationNum=16&fps=1 简介:第一次在CSDN上发表 ...

最新文章

  1. ubuntu 用命令行设置chrome的proxy
  2. 广西大学计算机科学与技术中法,广西大学
  3. python常用异常处理
  4. r语言参数fig=c(),干货︱R语言绘图—基础图形参数整理
  5. 第三次学JAVA再学不好就吃翔(part105)--流的标准处理异常
  6. Ubuntu18.04.4 环境下对属性加密算法CP-ABE环境搭建
  7. 程序员跳槽的7个常见理由,最后一个有人能看懂吗!
  8. android学习笔记---34_Activity的启动模式
  9. Python并发编程之多进程(实战)
  10. Canvas对画布及文字控制基础API学习
  11. Expo大作战(三十八)--expo sdk api之 FileSystem(文件操作系统)
  12. 泛微OA与SAP通过webservice方式对接数据完整操作
  13. 斐波那契(黄金分割法)查找算法(FibonacciSearch)
  14. 10分钟教你阿里云环境下搭建iredmail邮件服务器
  15. python:实现恩尼格玛密码机算法(附完整源码)
  16. 成人python线上培训机构_哪些成年人正通过在线教育平台学习?看这个大数据报告就知道...
  17. 动态规划---买卖股票的最佳时机
  18. 2021年北航计算机学院夏令营面试经历
  19. VScode与VSstdio差别该如何选择C语言IDE(集成开发环境)
  20. 高速公路 (highway)

热门文章

  1. 2017总结与2018展望
  2. 无根树的计数——prufer序列
  3. 云数据库RDS和对象存储OSS
  4. Angular +Ionic修改日期组件英文按钮
  5. html图片加标题加链接,手机移动网页制作:插入图片、标题、文字链接
  6. 概率统计及其应用第三章知识总结_高中数学130分,知识点最全总结,高分必看!...
  7. sftp工具都有哪些_自媒体都有哪些做图神器?自媒体人常用的工具
  8. AQS抽象队列同步器
  9. 计算机电子表操作格试题,计算机电子表格试题含答案Excel
  10. Python中常用英文单词大全