百度地图坐标转换

在百度地图开发过程中,有可能会遇到一些关于坐标转换的问题,下面就把自己在项目过程中遇到的一些转换方法以及网上搜集到的一些方法写下来,以备不时之需

1.国测局坐标转百度坐标

/**
     * 国测局转换百度经纬度
     * @param point
     * @return
     */
    public static LatLng gcjTobaidu(LatLng point) {
        // double x = gg_lon, y = gg_lat;
        double x = point.longitude, y = point.latitude;
        double z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * x_pi);
        double theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * x_pi);
        double bd_lon = z * Math.cos(theta) + 0.0065;
        double bd_lat = z * Math.sin(theta) + 0.006;
        LatLng point1 = new LatLng(bd_lat,bd_lon);
        return point1;
    }  

2.接下来是百度地图开发文档上面的坐标转换方法

  这里用到com.baidu.mapapi.map包下面的Projection类,我们要实现坐标转换首先要获取到百度地图的Projection

  方法:

Projection mProjection=mapView.getMap().getProjection()

然后用mProjection去调用百度api里面已经封装好的坐标转换方法
  

  1. 屏幕坐标  转  屏幕坐标

    返回值        方法
    LatLng        fromScreenLocation(Point point)

  2. 屏幕坐标  转  地理坐标

    该方法把以米为计量单位的距离(沿赤道)在当前缩放水平下转换到一个以像素(水平)为计量单位的距离。

    返回值        方法
    float          metersToEquatorPixels(float meters)

  3. 地理坐标  转  openGL坐标

    在 OnMapDrawFrameCallback 的 onMapDrawFrame 函数中使用。

    返回值        方法
    PointF        toOpenGLLocation(LatLng location, MapStatus mapStatus)

  
  

  4. 地理坐标   转  屏幕坐标

    返回值        方法
    Point        toScreenLocation(LatLng location)

时间: 2024-08-07 17:01:23

百度地图坐标转换的相关文章

java腾讯地图与百度地图坐标转换

/** * 坐标转换,腾讯地图转换成百度地图坐标 * @param lat 腾讯纬度 * @param lon 腾讯经度 * @return 返回结果:经度,纬度 */ public String map_tx2bd(double lat, double lon){ double bd_lat; double bd_lon; double x_pi=3.14159265358979324; double x = lon, y = lat; double z = Math.sqrt(x * x +

百度地图坐标转换服务封装(优化批量并发异步访问)

本人接触网页地图以来已有5年之窗,与百度地图打交道少说也有3年以上了,百度坐标转换从最开始的只支持单组坐标转换到现在的批量转换(限制每次100组),而且是无规律的算法纠偏,根本不好复制这种算法到本地进行转换,每次只能乖乖的ajax get到百度服务接口返回结果. 这种做法对于单组坐标的转换体验上影响不大,但是当我们需要纠偏的坐标量很多的时候,按正常的写法ajax异步请求,而且每次最多只能传入100组坐标,只能分批来调,而且是异步处理,还要定义一堆全局变量记住状态值,代码量多且复杂,项目大就难以管

微信小程序--百度地图坐标转换成腾讯地图坐标

最近开发小程序时出现一个问题,后台程序坐标采用的时百度地图的坐标,因为小程序地图时采用的腾讯地图的坐标系,两种坐标有一定的误差,导致位置信息显示不正确.现在需要一个可以转换两种坐标的方法,经过查询发现腾讯地图提供了一个接口用来将多种坐标类型转换成腾讯可用的坐标. 方法如下: reverseGeocoder(options:Object) 本接口提供由坐标到坐标所在位置的文字描述的转换,输入坐标返回地理位置信息和附近poi列表. options参数属性说明: 如图上所示,只需要传递坐标时加上参数c

百度地图坐标转换API和地图API

利用百度地图的服务将经纬度转换为米单位坐标 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Net; using System.IO; using System.Diagnostics; namespace ConsoleApplication1 { class Program { static void Main(string[] args) {

ios 百度地图坐标转换

CLLocationCoordinate2D coor = CLLocationCoordinate2DMake(39.90868, 116.3956);//原始坐标 //转换 google地图.soso地图.aliyun地图.mapabc地图和amap地图所用坐标至百度坐标 NSDictionary* testdic = BMKConvertBaiduCoorFrom(coor,BMK_COORDTYPE_COMMON); //转换GPS坐标至百度坐标(加密后的坐标) testdic = BM

百度地图坐标转换的异步回调事件

在后台拿到数据后,需要将坐标转化为百度坐标进行标注打点,同时进行划线. 代码如下: 1.请求service拿到坐标数据 //设备定位 $scope.loadPosition = function () { deviceService.Position($scope.coudition, function success(result, status) { line=[]; if (status) { if (result.data.length > 0) { line.push(result.d

GPS坐标转百度地图并且加载地图示例.支持微信端访问

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Wx_VehicleLocation.aspx.cs" Inherits="DTMS.WeiXin.wxmgr.govmgr.Wx_VehicleLocation" %> <!DOCTYPE html> <html xmlns="http://www.w3.org/1999

百度地图,高德地图,HTML5经纬度比较

对于一个地点的经纬度,是确定的?这个问题,我想很多人都会回答,肯定了,可实际上呢?我只能呵呵了. 在使用百度地图的过程中,发现一个很奇怪的现象,有时候调用百度地图js API时,后得到一个错的离谱的地方.然后我自己也就研究了一下jsAPI获取地理位置的相关信息,jsAPI其实都是利用了HTML5中的方法获取地理信息的.但很奇怪,使用HTML5获取到的经纬度和百度获取的竟然相差很大. HTML5获取到的经纬度 function getLocation() { if (navigator.geolo

去百度API的百度地图准确叠加和坐标转换的解决方案研究

1.背景 目前项目上如果要使用百度地图,得加载百度的开发包,然后通过百度提供的接口来调用百度地图以及将需要标记的点显示在百度地图中等等. 此方案存在明显劣势: a.对原系统的破坏.一套从底层开发的系统,其地图的加载方式均是从底层通过换算行列号来进行加载的.而百度地图却必须脱离此方案通过调用百度API来实现,破坏了整个系统的架构,并且导致很多基于原架构的功能无法使用. b.自身发布的矢量服务等无法使用.因为百度采用的是非标准火星坐标,自己采集的大量shp数据如果不纠正到百度坐标系下,是无法正确叠加