如何将经纬度利用Google Map API显示C# VS2005 Sample Code

简介: 原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code 日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上,这个做法有两种,最简单的就是直接传值到Google Maps上.

原文 如何将经纬度利用Google Map API显示C# VS2005 Sample Code

日前写了一篇如何用GPS抓取目前所在,并回传至资料库储存,这篇将会利用这些回报的资料,将它显示在地图上,这个做法有两种,最简单的就是直接传值到Google Maps上.

 

举例来说,当我们知道经纬度后,只要将数据套到以下网址即可.

http://maps.google.com/maps?q=25.048346%2c121.516396

在参数q=后面,就可以加上经纬度了.

25.048346是Latitude纬度

%2c是空格

121.516396就是Longitude经度了.

范例画面:

image

 

而另一种做法就比这个复杂一点,要使用Google API来做,首先,要使用google API就必需要有google的帐号,没帐号是无法申请的,当有google的帐号后,就可以到http: //code.google.com/apis/maps/signup.html开始申请了.

image

最 下方My web site URL就输入各位的URL啰,如果输入的与执行google map api的URL不同,那就无法执行了.所以这个URL务必输入正确, 输入正确的URL并将上方的CheckBox打勾后,就可以按Generate API Key了,如果已经登入GOOGLE的,就不会再跳登入画面,之后就会跳到另一个画面,上面就有Key及Example Code了,当有了这些,就可以开始自己写Code了.

 

基本上,因为主要是Demo用的,所以设计介面很简单.

map1

上面就一个DropDownList,因为先前的范例资料的关系,先手动在ITEM上加上1跟2.

而下方的地图,就跟申请API时的Example Code一样. 原始码如下:

 

 <%@ Page Language= "C#" AutoEventWireup= "true" CodeFile= "Default.aspx.cs" Inherits= "_Default" %>

 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >  <html xmlns= "http://www.w3.org/1999/xhtml" >  <head runat= "server" >  <title>GPS 位置地图</title>  <script src= "http://maps.google.com/maps?file=api&amp;v=2&amp;key=输入你的Key"  type= "text/javascript" ></script>  <script src= "http://www.google.com/uds/api?file=uds.js&v=1.0&key=输入你的Key"  type= "text/javascript" ></script>  <script src= "http://www.google.com/uds/solutions/localsearch/gmlocalsearch.js" type= "text/javascript" ></script>  <style type= "text/css" > @import url( "http://www.google.com/uds/css/gsearch.css" );  @import url( "http://www.google.com/uds/solutions/localsearch/gmlocalsearch.css" );  </style>  <script type= "text/javascript" >  //<![CDATA[  function load(x,y,LocationName) {  if (GBrowserIsCompatible()) {  var map = new GMap2(document.getElementById( "map" ));  var point = new GLatLng(x,y);  map.setCenter(point, 16);  map.addOverlay( new GMarker(point));  map.addControl( new GLargeMapControl());  map.addControl( new GMapTypeControl());  map.addControl( new GScaleControl());  var lsc = new google.maps.LocalSearch();  map.addControl( new google.maps.LocalSearch() , new GControlPosition(G_ANCHOR_BOTTOM_RIGHT, new GSize(10,20)));  map.openInfoWindowHtml (map.getCenter(), LocationName);  }  }  //]]>  </script>  </head>  <body id= "MainBody" runat= "server" >  <form id= "form1" runat= "server" >  <div>  <asp:DropDownList ID= "ddl_Location" runat= "server" AutoPostBack= "True" OnSelectedIndexChanged= "ddl_Location_SelectedIndexChanged"  Width= "500px" >  <asp:ListItem>1</asp:ListItem>  <asp:ListItem Value= "2" >2</asp:ListItem>  </asp:DropDownList><br />  <br />  <div id= "map" style= "width: 500px; height: 400px" >  </div>  </div>  </form>  </body>  </html> 

 

 

 

只要将"输入你的Key"的地方置换为你在Google MAP API申请到的Key即可.

 

    protected void Page_Load( object sender, EventArgs e)
     {
         if (!IsPostBack)  {  if (Request.QueryString.HasKeys())  {  string longitude = Request.QueryString.Get( "lon" );  string latitude = Request.QueryString.Get( "lat" );  string LN = Request.QueryString.Get(Server.UrlDecode( "LN" ));  this .MainBody.Attributes.Add( "onload" , "load(" + longitude + "," + latitude + ",'" + LN + "')" );  }  else  {  DataTable dt = GetLocation(ddl_Location.SelectedValue);  if (dt.Rows.Count > 0)  {  DataRow dr = dt.Rows[0];  this .MainBody.Attributes.Add( "onload" , "load(" + dr[ "Latitude" ].ToString() + "," + dr[ "Longitude" ].ToString() + ",'" + dr[ "updtime" ].ToString() + "')" );  }  }  }  }  protected void ddl_Location_SelectedIndexChanged( object sender, EventArgs e)  {  try  {  DataTable dt = GetLocation(ddl_Location.SelectedValue);  if (dt.Rows.Count > 0)  {  DataRow dr = dt.Rows[0];  this .MainBody.Attributes.Add( "onload" , "load(" + dr[ "Latitude" ].ToString() + "," + dr[ "Longitude" ].ToString() + ",'" + dr[ "updtime" ].ToString() + "')" );  }  }  catch (Exception ex)  {  Response.Write(ex.Message);  }  }  private DataTable GetLocation( string UID)  {  try  {  string strconn = "Data Source=localhost;Initial Catalog=GPSDB;User Id=GPSUser;Password=gpsuser;" ;  SqlConnection conn = new SqlConnection(strconn);  string strcmd = "select Latitude,Longitude,UpdTime from GPSDB..gpstrace where UID=@UID" ;  SqlCommand cmd = new SqlCommand(strcmd, conn);  cmd.Parameters.AddWithValue( "@UID" , UID);  SqlDataAdapter da = new SqlDataAdapter(cmd);  DataTable dt= new DataTable();  da.Fill(dt);  return dt;  }  catch (Exception ex)  {  throw new Exception(ex.Message);  }  } 

 

 

 

如此一来,就大功告成了,但或许有些人会有些遗问,那么MAP上,可以自订一些东西,例如不给搜寻列,这都是可以做到的,可以参考Google Map API Examples ,这里就有很多详细的说明.

 

感觉起来,GPS定位的想法部份,好像到此就没了,但在这过程中也发现到,其实Google Map有出Mobile版 的,而它的定位可不只是局限在GPS卫星讯号,而是可以用手机的讯号去定位,也就是说,他是透过手机与基地台之间的传输来计算出所在位置,这样就可以不受 到手机没有GPS功能模组或收不到卫星讯号所限制,这个概念其实也不算新,记得几年前的Run!PC杂志上就有篇文章是在介绍这个的,采用的技术是 Java.

 

不过不管如何,可以预见的是,这个的应用会愈来愈多元,谁说未来还要自己去用电脑下载图资再更新到自己的GPS装置上,装置上的地图永远会是最新的,加上Street View,也不用去看那电脑画出来的3D的道路图了,或许3G或无线上网的普及,这些运用将会更广泛.

 

参考资料:

Google Map API Examples

Google Map Mobile

 

原始码: GPSMap.zip

 
目录
相关文章
|
2月前
|
C# 开发工具 C++
code runner 运行C#项目
本文介绍了如何修改Code Runner设置使 Visual Studio Code (VS Code) 能直接运行完整的 C# 项目。传统方式依赖 cscript 工具,仅支持 .csx 文件,功能受限且已停止维护。新配置使用 `dotnet run` 命令,结合一系列炫酷的cmd指令,将指令定位到具体的csproj文件上进行运行。
116 38
|
2月前
|
人工智能 前端开发 API
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
Gemini Coder 是一款基于 Google Gemini API 的 AI 应用生成工具,支持通过文本描述快速生成代码,并提供实时代码编辑和预览功能,简化开发流程。
172 38
Gemini Coder:基于 Google Gemini API 的开源 Web 应用生成工具,支持实时编辑和预览
|
4月前
|
设计模式 开发框架 安全
C# 一分钟浅谈:GraphQL API 与 C#
本文介绍了 GraphQL API 的基本概念及其优势,并通过 C# 实现了一个简单的 GraphQL 服务。GraphQL 是一种高效的 API 查询语言,允许客户端精确请求所需数据,减少不必要的数据传输。文章详细讲解了如何使用 `GraphQL.NET` 库在 C# 中创建和配置 GraphQL 服务,并提供了常见问题的解决方案和代码示例。
105 4
|
4月前
|
API
时间操作[计算时间差]免费API接口教程-{"code":200,"msg":"0天11时6分40秒"}
此API用于获取两个时间戳之间的格式化时间差。支持POST和GET请求,需提供用户ID、用户KEY及两个时间戳作为参数。返回状态码及时间差或错误信息。示例URL:https://cn.apihz.cn/api/time/zjgapi.php?id=88888888&key=88888888&time1=1710925735&time2=1710927735。建议使用个人ID与KEY以避免调用限制。
|
4月前
|
API
全球天气预报5天-经纬度版免费API接口教程
该接口提供全球任意地区未来5天的天气预报,需输入经纬度参数。支持POST和GET请求方式,返回数据包括天气、气温、气压等详细信息。请求需包含用户ID和KEY,详情及示例参见文档。
|
4月前
|
API
国外地区经纬度查询免费API接口教程
此接口用于查询国外地区的经纬度信息,支持POST和GET请求方式。需提供用户ID、用户KEY、省级名称及具体地点。返回数据包括地区名称(中英文)、国家代码及经纬度等详细信息。示例请求与响应数据详见文档。
158 29
|
4月前
|
API
全国行政区划代码与经纬度查询免费API接口教程
该接口提供全国各行政区划代码及经纬度查询服务。通过POST或GET请求,输入用户ID、KEY及地点名称,可获取地区代码、省份、市级、区县级名称及经纬度等信息。示例URL:https://cn.apihz.cn/api/other/xzqhdm.php?id=88888888&key=88888888&sheng=北京&place=北京。返回数据包含状态码、信息提示及查询结果。
518 14
|
4月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
69 3
|
5月前
|
开发框架 .NET API
RESTful API 设计与实现:C# 开发者的一分钟入门
【10月更文挑战第5天】本文从零开始,介绍了如何使用 C# 和 ASP.NET Core 设计并实现一个简单的 RESTful API。首先解释了 RESTful API 的概念及其核心原则,然后详细说明了设计 RESTful API 的关键步骤,包括资源识别、URI 设计、HTTP 方法选择、状态码使用和错误处理。最后,通过一个用户管理 API 的示例,演示了如何创建项目、定义模型、实现控制器及运行测试,帮助读者掌握 RESTful API 的开发技巧。
162 7
|
5月前
|
API C#
异步轮询 Web API 的实现与 C# 示例
异步轮询 Web API 的实现与 C# 示例
127 0