1.效果图:
2.运行结果:
E/TAG: 最初始的高德选点坐标: 113.402847,23.164699
E/TAG: g84坐标点: 113.39732255710973,23.167184411566584
E/TAG: g02的坐标点: 113.40284721155093,23.16469943818697
E/TAG: 最终的坐标点: 113.40284698937967,23.164707045643137
3.说明:
最近碰到一个硬件,经纬度是gps获取的 ,在Android设备上,用高德地图显示的时候,出现了坐标偏移,此demo正是为了解决此事而来
坐标系参考地址:http://www.gpsspg.com/maps.htm
4.添加高德地图引用:
//3d地图 和导航
implementation 'com.amap.api:navi-3dmap:latest.integration'
//定位
implementation 'com.amap.api:location:latest.integration'
//搜索
implementation 'com.amap.api:search:latest.integration'
5.主界面:
package com.example.admin.zkotlin
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Button
import android.widget.TextView
import com.amap.api.maps.CoordinateConverter
import com.amap.api.maps.model.LatLng
import com.kaisavx.AircraftController.util.*
import kotlinx.android.synthetic.main.activity_main.*
class MainActivity : AppCompatActivity() {
//经过测试 本例子中, 其实高德坐标 就是 火星坐标gcj02 误差非常小
internal var lat = 23.164699 //大洋图文
internal var lon = 113.402847
private var oldposition: LatLng? = null //最初始的高德选点坐标
private var g84position: LatLng? = null //最初始的高德选点坐标 转换成g84
private var g02position: LatLng? = null // g84 转g02
private var endposition: LatLng? = null // g02 转 高德
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
oldposition = LatLng(lat, lon)
tv_old_gaode!!.text = oldposition.toString()
Log.e("TAG", "最初始的高德选点坐标: " + oldposition!!.longitude + "," + oldposition!!.latitude)
g84position = gcj02towgs84(LatLng(oldposition!!.latitude, oldposition!!.longitude))
tv_gps!!.text = g84position.toString()