Kotlin地图坐标系转换

本文介绍了如何使用Kotlin解决Android设备上高德地图显示GPS坐标偏移的问题。通过提供的MapUtils.kt转换算法,可以将GPS坐标适配到地图上,尽管可能存在小误差,但已满足商业应用需求。
摘要由CSDN通过智能技术生成

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()
       
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值