利用百度地图的服务将经纬度转换为米单位坐标

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)
{
double[,] LonLat = new double[, ] { { 114.21892734521, 29.575429778924 }, { 114.21892734521, 29.575429778924 } }; string url = string.Format("http://api.map.baidu.com/geoconv/v1/?coords={0},{1};{2},{3}&from=1&to=6&ak=你的密钥", LonLat[,], LonLat[,], LonLat[,], LonLat[,]);
string res = SendRequest(url, Encoding.UTF8);
Debug.WriteLine(res);
int x = res.IndexOf("\"x\":");
int y = res.IndexOf("\"y\":");
int endy = res.IndexOf("}");
string xx = res.Substring(x+ , y - x - );
string yy = res.Substring(y + , endy - y-);
Console.Write(xx+"米 ");
Console.WriteLine(yy + "米 ");
x = res.IndexOf("\"x\":", x+);
y = res.IndexOf("\"y\":",y+);
endy = res.IndexOf("}",endy+);
xx = res.Substring(x + , y - x - );
yy = res.Substring(y + , endy - y - );
Console.Write(xx+"米 ");
Console.WriteLine(yy + "米");
}
/// <summary>
/// Get方式获取url地址输出内容
/// </summary> /// <param name="url">url</param>
/// <param name="encoding">返回内容编码方式,例如:Encoding.UTF8</param>
public static String SendRequest(String url, Encoding encoding)
{
HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(url);
webRequest.Method = "GET";
HttpWebResponse webResponse = (HttpWebResponse)webRequest.GetResponse();
StreamReader sr = new StreamReader(webResponse.GetResponseStream(), encoding);
return sr.ReadToEnd();
}
}
}

结果:

官方开发说明:http://developer.baidu.com/map/changeposition.htm

获取密钥:http://lbsyun.baidu.com/apiconsole/key

我自己的密钥:http://lbsyun.baidu.com/apiconsole/key

http://developer.baidu.com/map/jsdemo.htm#a1_2

利用密钥还建立了一个显示地图的网页

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";}
</style>
<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=密钥"></script>
<title>地图展示</title>
</head>
<body>
<div id="allmap"></div>
</body>
</html>
<script type="text/javascript">
// 百度地图API功能
var map = new BMap.Map("allmap"); // 创建Map实例
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11); // 初始化地图,设置中心点坐标和地图级别
map.addControl(new BMap.MapTypeControl()); //添加地图类型控件
map.setCurrentCity("北京"); // 设置地图显示的城市 此项是必须设置的
map.enableScrollWheelZoom(true); //开启鼠标滚轮缩放
</script>

一个有关地图的开源项目:

http://greatmaps.codeplex.com/SourceControl/latest

百度地图09坐标转wgs84坐标

1.百度09坐标转火星坐标系

2.火星坐标系转wgs84坐标系

/// <summary>
/// 地球坐标系 (WGS-84) 到火星坐标系 (GCJ-02) 的转换 帮助类
/// </summary>
public static class WGSGCJLatLonHelper
{
/*
*参考:
*1.http://blog.csdn.net/yorling/article/details/9175913
*2.http://kongxz.com/2013/10/wgs-cgj/
*3.https://on4wp7.codeplex.com/SourceControl/changeset/view/21483#EvilTransform.cs
*4.https://github.com/googollee/eviltransform
*5.https://github.com/shenqiliang/WGS2Mars
*
*WGS84:World Geodetic System 1984,是为GPS全球定位系统使用而建立的坐标系统。通过遍布世界的卫星观测站观测到
*的坐标建立,其初次WGS84的精度为1-2m,在1994年1月2号,通过10个观测站在GPS测量方法上改正,得到了WGS84
*(G730),G表示由GPS测量得到,730表示为GPS时间第730个周。1996年,National Imagery and Mapping Agency (NIMA)
*为美国国防部 (U.S.Departemt of Defense, DoD)做了一个新的坐标系统。这样实现了新的WGS版本:WGS(G873)。其因为
*加入了USNO站和北京站的改正,其东部方向加入了31-39cm 的改正。所有的其他坐标都有在1分米之内的修正。
*
*GCJ-02:国家保密插件,也叫做加密插件或者加偏或者SM模组,其实就是对真实坐标系统进行人为的加偏处理,按照几行代码的算
*法,将真实的坐标加密成虚假的坐标,而这个加偏并不是线性的加偏,所以各地的偏移情况都会有所不同。而加密后的坐标也常
*被人称为火星坐标系统。GCJ-02 意味“国测局-2002”,也就是说,这是国家测绘局于2002年弄出的标准。
*/
#region 常量以及私有方法
const double pi = 3.14159265358979324;//Math.PI;//;
const double a = 6378245.0;
const double ee = 0.00669342162296594323;
private static double TransformLat(double lonX, double latY)
{
double _ret = -100.0 + 2.0 * lonX + 3.0 * latY + 0.2 * latY * latY + 0.1 * lonX * latY + 0.2 * Math.Sqrt(Math.Abs(lonX));
_ret += (20.0 * Math.Sin(6.0 * lonX * pi) + 20.0 * Math.Sin(2.0 * lonX * pi)) * 2.0 / 3.0;
_ret += (20.0 * Math.Sin(latY * pi) + 40.0 * Math.Sin(latY / 3.0 * pi)) * 2.0 / 3.0;
_ret += (160.0 * Math.Sin(latY / 12.0 * pi) + * Math.Sin(latY * pi / 30.0)) * 2.0 / 3.0;
return _ret;
}
private static double TransformLon(double lonX, double latY)
{
double _ret = 300.0 + lonX + 2.0 * latY + 0.1 * lonX * lonX + 0.1 * lonX * latY + 0.1 * Math.Sqrt(Math.Abs(lonX));
_ret += (20.0 * Math.Sin(6.0 * lonX * pi) + 20.0 * Math.Sin(2.0 * lonX * pi)) * 2.0 / 3.0;
_ret += (20.0 * Math.Sin(lonX * pi) + 40.0 * Math.Sin(lonX / 3.0 * pi)) * 2.0 / 3.0;
_ret += (150.0 * Math.Sin(lonX / 12.0 * pi) + 300.0 * Math.Sin(lonX / 30.0 * pi)) * 2.0 / 3.0;
return _ret;
}
private static MyPoint Transform(MyPoint point)
{
MyPoint _transPoint = new MyPoint();
double _lat = TransformLat(point.LonX - 105.0, point.LatY - 35.0);
double _lon = TransformLon(point.LonX - 105.0, point.LatY - 35.0);
double _radLat = point.LatY / 180.0 * pi;
double _magic = Math.Sin(_radLat);
_magic = - ee * _magic * _magic;
double _sqrtMagic = Math.Sqrt(_magic);
_lat = (_lat * 180.0) / ((a * ( - ee)) / (_magic * _sqrtMagic) * pi);
_lon = (_lon * 180.0) / (a / _sqrtMagic * Math.Cos(_radLat) * pi);
_transPoint.LatY = _lat;
_transPoint.LonX = _lon; return _transPoint;
}
#endregion
#region 火星坐标转 (GCJ-02)地球坐标(WGS-84)
/// <summary>
/// 火星坐标转 (GCJ-02)地球坐标(WGS-84)
/// </summary>
/// <param name="gcjPoint">火星坐标转 (GCJ-02)</param>
/// <returns>地球坐标(WGS-84)</returns>
public static MyPoint GCJ02ToWGS84(MyPoint gcjPoint)
{
if (outOfChina(gcjPoint))
{
return gcjPoint;
}
MyPoint _transPoint = Transform(gcjPoint);
return new MyPoint(gcjPoint.LatY - _transPoint.LatY, gcjPoint.LonX - _transPoint.LonX);
}
#endregion
#region 地球坐标(WGS-84)转火星坐标 (GCJ-02)
/// <summary>
/// 地球坐标(WGS-84)转火星坐标 (GCJ-02)
/// </summary>
/// <param name="wgsPoint">地球坐标(WGS-84)</param>
/// <returns>火星坐标 (GCJ-02)</returns>
public static MyPoint WGS84ToGCJ02(MyPoint wgsPoint)
{
if (outOfChina(wgsPoint))
{
return wgsPoint;
}
MyPoint _transPoint = Transform(wgsPoint);
return new MyPoint(wgsPoint.LatY + _transPoint.LatY, wgsPoint.LonX + _transPoint.LonX);
}
#endregion
#region 火星坐标系转百度坐标系
public static MyPoint GCJ02ToBD09(MyPoint gcjpoint)
{
double x = gcjpoint.LonX, y = gcjpoint.LatY;
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 MyPoint(bd_lat + 0.006, bd_lon);
}
#endregion
#region 百度坐标系转火星坐标系
public static MyPoint BD09ToGCJ02(MyPoint bdpoint)
{
double x = bdpoint.LonX - 0.0065, y = bdpoint.LatY - 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 MyPoint(gg_lat, gg_lon);
}
#endregion
#region 百度坐标转GPS坐标
public static MyPoint BD09ToWGS84(MyPoint bdpoint)
{
MyPoint gcj02 = BD09ToGCJ02(bdpoint);
MyPoint wgs84 = GCJ02ToWGS84(gcj02);
return wgs84;
}
#endregion
private static bool outOfChina(MyPoint pt)
{
if (pt.LonX < 72.004 || pt.LonX > 137.8347)
return true; if (pt.LatY < 0.8293 || pt.LatY > 55.8271)
return true; return false;
} }
public class MyPoint
{
public double LonX
{
get;
set;
} public double LatY
{
get;
set;
}
public MyPoint(double latY, double lonX)
{
LatY = latY;
LonX = lonX;
}
public MyPoint()
{ }
}

百度地图坐标转换API和地图API的更多相关文章

  1. 关于百度地图API的地图坐标转换问题

    原文:关于百度地图API的地图坐标转换问题 我在之前的文章利用html5获取经纬度并且在百度地图中显示位置中使用了百度地图的API来显示html5获取的地理位置,在文中我说过这样的话,我说百度地图的准 ...

  2. 百度地图api根据地图缩放等级显示不同的marker点,功能二

    功能一里面有marker点后台的代码 根据地图的缩放等级显示不同marker点的坐标JSP代码 <%@ page language="java" contentType=&q ...

  3. 百度地图API自定义地图

    http://api.map.baidu.com/lbsapi/creatmap/index.html http://developer.baidu.com/map/index.php?title=w ...

  4. 网页嵌入百度地图和使用百度地图api自定义地图的详细步骤

    在网页中插入百度地图 如果想在自己的网页上面加入百度地图的话,可以用百度地图的api.具体使用方法如下: 第一步:进入百度创建地图的网站http://api.map.baidu.com/lbsapi/ ...

  5. 【百度地图API】如何制作一张魔兽地图!!——CS地图也可以,哈哈哈

    原文:[百度地图API]如何制作一张魔兽地图!!--CS地图也可以,哈哈哈 摘要: 你玩魔兽不?你知道如何做一张魔兽地图不?! 快来看此文吧! ---------------------------- ...

  6. 【百度地图API】如何快速创建带有标注的地图?——快速创建地图工具+如何标注商家

    原文:[百度地图API]如何快速创建带有标注的地图?--快速创建地图工具+如何标注商家 摘要: 如果你不会程序,如果你不想写代码. 如果你想拥有一张自己的地图,如果你想在该地图上标注出你商店的位置. ...

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

    最近开发小程序时出现一个问题,后台程序坐标采用的时百度地图的坐标,因为小程序地图时采用的腾讯地图的坐标系,两种坐标有一定的误差,导致位置信息显示不正确.现在需要一个可以转换两种坐标的方法,经过查询发现 ...

  8. Google Map Api 谷歌地图接口整理

    一:基本知识: 1. 使用谷歌地图 API 的第一步就是要注册一个 API 密钥,需要注重一下两点: 1.假如使用 API 的页面还没有发布,只是在本地调试,可以不用密钥,随便用个字符串代替就可以了. ...

  9. 【高德地图API】从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图

    原文:[高德地图API]从零开始学高德JS API(一)地图展现——仙剑地图,麻点图,街景,室内图 摘要:关于地图的显示,我想大家最关心的就是麻点图,自定义底图的解决方案了吧.在过去,marker大于 ...

  10. Google地图接口API之地图类型(六)

    1. Google 地图- 基本地图类型 Google Maps API 中提供了以下地图类型: MapTypeId.ROADMAP,用于显示默认的道路地图视图 MapTypeId.SATELLITE ...

随机推荐

  1. ios 面试题 0

    1.__block和__weak修饰符的区别:  1.__block不管是ARC还是MRC模式下都可以使用,可以修饰对象,还可以修饰基本数据类型.  2.__weak只能在ARC模式下使用,也只能修饰 ...

  2. chisel中pviews命令无法使用

    chisel是用Python写的LLDB调试器插件,用来调试iOS应用非常方便,相关下载安装链接如下:https://github.com/facebook/chisel.本人安装之后,在xcode里 ...

  3. js实现checkbox全选与反选

    <script type="text/javascript" language="javascript"> function checkAll(id ...

  4. automation studio 6.0 破解版 32位

    破解软件在iso文件的patch目录下 链接:http://pan.baidu.com/s/1o8KR7rc 密码:y87g   

  5. 网易2014校园招聘杭州Java笔试题

    10) ABC http://soft.chinabyte.com/os/56/12516056.shtml 11) BD. 12) AC. http://blog.sina.com.cn/s/blo ...

  6. IoC - Castle Windsor 2.1

    找过一些Windsor教程的文章,博客园上TerryLee有写了不少,以及codeproject等也有一些例子,但都讲的不太明了.今天看到Alex Henderson写的一个系列,非常简单明了.下面是 ...

  7. springMVC+ freemark多视图配置

    <!--通用视图解析器--> <bean id="viewResolverCommon" class="org.springframework.web. ...

  8. NOI十连测 第五测 T1

    #include<cstdio> #include<cstring> #include<cmath> #include<iostream> #inclu ...

  9. Arcgis api For silverlight 加载QQ地图

    原文 http://www.cnblogs.com/thinkaspx/archive/2012/11/07/2759079.html //本篇博客仅在技术上探讨可行性   //如果要使用Q 地图,请 ...

  10. vmware 网络连接

    解决VMware nat service等服务不能启动 虚拟机如何设置网络连接来上网?