高德地图Windows Phone API 是一套简单的地图应用开发调用接口,可支持地图显示与操作,兴趣点搜索,地理编码与基站定位等功能;开发者可以轻松地将其嵌入自己的应用程序,并提供稳定的位置及地图应用程序。

高德地图API可以帮助我们实现以下功能

定位:包括GPS、WiFi、基站定位

地图:包括矢量和栅格地图显示,地图移动和缩放,地图标注添加和删除

地图工具:包括计算两点间距离,经纬度坐标转为屏幕坐标,屏幕坐标转为经纬度坐标

地图查询:包括关键字查询,坐标点周边关键字查询,关键字类型查询

路径规划:驾车导航、公交换乘

地理编码:包括地理编码和逆地理编码

我发现实例代码中这些功能都以实现,方便我们学习呀。嘻嘻

开发包 +实例代码+API文档下载地址:http://code.autonavi.com/WP/download

我学习了地图定位和地图模式的切换

高德地图地图模式的有:ChangeBaseLayer2SatelliteMap卫星图;ChangeSatelliteMap2RoadMap地图;

实例-----实现定位和地图模式的切换----------------------------

首先在项目添加:AMap.WP7.Search.API.dll和AMap.WP7.Map.API.dll的引用

在高德地图API中提供了纠偏方法 MRGCSearch.GPSToOffset 方法 从而方便我们解决定位不准确的问题

public static void GPSToOffset(double[] poisX,double[] poisY,Action<MRGCSearchResult> action
)

参数
poisX
类型:array<System..::..Double>[]()[][]
经度数组
poisY
类型:array<System..::..Double>[]()[][]
纬度数组
action
类型:System..::..Action<(Of <(<'MRGCSearchResult>)>)>
回调函数

在MainPage的Xmal文件中添加

    xmlns:AbcMap="clr-namespace:Com.AMap.Maps.Api;assembly=AMap.WP7.Map.API"

  <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0"><AbcMap:MMap Zoom="10" MapLoaded="mymap_MapLoaded" Name="mymap" ZoomEnabled="True" ToolBar="Visible" /></Grid>

<phone:PhoneApplicationPage.ApplicationBar><shell:ApplicationBar Opacity="0.4" Mode="Minimized" ><shell:ApplicationBar.MenuItems><shell:ApplicationBarMenuItem Text="cai"></shell:ApplicationBarMenuItem></shell:ApplicationBar.MenuItems><shell:ApplicationBarIconButton x:Name="AppLocationBtn" IconUri="/icons/Location.png" Click="AppLocationBtn_Click" Text="定位"/><shell:ApplicationBarIconButton x:Name="MapModeBtn" IconUri="/icons/Mode.png"  Click="MapModeBtn_Click" Text="视图"/></shell:ApplicationBar></phone:PhoneApplicationPage.ApplicationBar>

MainPage.cs代码

int mapmode = 0;/// <summary>/// 默认点击点坐标/// </summary>double x = 116.324735831984;double y = 39.9081397215191;public MainPage(){InitializeComponent();StartGeoCoordinateWatcher();}//中心标记
        MMarker centerMarker;MCircle centerCircle;/// <summary>/// 根据经纬定位/// </summary>private void StartGeoCoordinateWatcher(){GeoCoordinateWatcher gwatcher = new GeoCoordinateWatcher(GeoPositionAccuracy.Default);gwatcher.PositionChanged += (sender, e) =>{x = e.Position.Location.Latitude;//纬度y = e.Position.Location.Longitude;//经度//将真实坐标转偏移坐标 MRGCSearch.GPSToOffset(new double[] { e.Position.Location.Longitude }, new double[] { e.Position.Location.Latitude }, (mr) =>{if (mr.Erro==null){if (centerMarker == null){mymap.Children.Add(centerMarker = new MMarker(){LngLat = mr.RGCItemList[0],IconURL = "/Images/location_on.png",Anchor = new Point(0.5, 0.5),});mymap.Children.Add(centerCircle = new MCircle() { });//设置圆的中心点和半径 半径单位为米  //RGCItemList坐标偏移查询结果类 centerCircle.SetCenterAndRadius(mr.RGCItemList[0], 200);}else{centerMarker.LngLat = mr.RGCItemList[0];centerCircle.SetCenterAndRadius(mr.RGCItemList[0], 200);}mymap.Center = mr.RGCItemList[0];}});};gwatcher.Start();}

  private void AppLocationBtn_Click(object sender, EventArgs e){mymap.Zoom = 13;StartGeoCoordinateWatcher();ReGeoCodeToAddressWithOption();}/// <summary>/// 地图/// </summary>private void ChangeSatelliteMap2RoadMap(){mymap.ChangeSatelliteMap2RoadMap();}/// <summary>/// 卫星图/// </summary>private void ChangeBaseLayer2SatelliteMap(){mymap.ChangeBaseLayer2SatelliteMap();}/// <summary>/// 显示交通道路/// </summary>private void TrafficMap(){MTileLayer trafficlayer = new MTileLayer(MTileLayerType.Traffic);mymap.AddLayer(trafficlayer);}/// <summary>///地图模式/// </summary>/// <param name="sender"></param>/// <param name="e"></param>private void MapModeBtn_Click(object sender, EventArgs e){if (mapmode == 0){ChangeSatelliteMap2RoadMap();////切换成地图mapmode = 1;return;}else if (mapmode == 1){ChangeBaseLayer2SatelliteMap();////卫星图mapmode = 2;return;}else{TrafficMap();mapmode = 0;return;}}private void mymap_MapLoaded(object sender, Com.AMap.Maps.Api.Events.MapEventArgs e){mymap.ZoomEnded += new EventHandler<Com.AMap.Maps.Api.Events.MapEventArgs>(mymap_ZoomEnded);}void mymap_ZoomEnded(object sender, Com.AMap.Maps.Api.Events.MapEventArgs e){if (mymap.Zoom >= 13){centerCircle.Visibility = System.Windows.Visibility.Visible;}else{centerCircle.Visibility = Visibility.Collapsed;}}

运行成功:

实例代码下载 : http://vdisk.weibo.com/s/ayEqj

转载于:https://www.cnblogs.com/fxiaoquan/archive/2012/08/15/2639462.html

高德地图Windowphone API学习-地图定位与地图模式的切换相关推荐

  1. 关于百度地图js api的getCurrentPosition定位不准确的解决方法

    关于百度地图js api的getCurrentPosition定位不准确的解决方法 参考文章: (1)关于百度地图js api的getCurrentPosition定位不准确的解决方法 (2)http ...

  2. 高德地图 Android API 的基站定位原理及使用方法

    基站定位是根据通讯网络基站信息进行定位的方法,此定位方法需要有较丰富的基站地理信息数据支持.高德地图目前的基站数据库支持 GSM 网络和CDMA网络. 定位机制 Android 平台主要使用三个 Cl ...

  3. js 调用android定位,基于html5+ 高德地图JS API使用安卓定位sdk用来进行定位

    使用Native.js打开Android的H5辅助定位 mui.plusReady(function() { if(plus.os.name == 'Android') { var AMapLocat ...

  4. 百度地图JavaScript API 学习之浏览器定位

    浏览器定位示例 百度地图API官方的所有demo示例--请直戳这里 官方浏览器定位demo示例--请直戳这里 后来发现的问题,这里记录一下: 在使用百度地图JS API时,无意中发现谷歌浏览器的浏览器 ...

  5. 百度地图JavaScript API 学习之添加控件

    创建地图之添加控件 官方demo示例和讲解--直戳这里 这个案例就比较简单了,只需要在地图展示的基础上,添加一些与地图控件相关的代码就行了. 说明: 1.可以使用Map.addControl()方法向 ...

  6. 百度地图JavaScript API 学习之根据IP定位

    IP定位示例 官方浏览器定位demo示例--请直戳这里 代码示例 <!DOCTYPE html> <html lang="en"> <head> ...

  7. 百度地图JavaScript API 学习之地址解析

    获取地图数据之地址解析 首先我们需要知道如何进行地址解析以及有哪些地址解析的方式. 其实,百度地图API给我们提供了2种解析方式:地址解析和逆地址解析. 下面我们来认识一下它们.[官方的介绍地址请点这 ...

  8. 百度地图JavaScript API 学习之自定义标注图标(一)

    地图绘制之添加自定义标注图标(一) 通过Icon类可实现自定义标注的图标.附上Icon的类参考链接,自行查看 官方提供了两种方法: 通过参数MarkerOptions的icon属性进行设置 使用Mar ...

  9. js室内地图开发_入门指南-室内地图 JS API | 高德地图API

    快速入门将带您迅速了解高德地图室内JS API的基本使用,学习如何创建和设置地图,是您在最短时间内成为JS API的开发者. 第1步 准备页面 在正式开始开发地图应用之前,您需要做如下几步: 申请JS ...

  10. js室内地图开发_概述-室内地图 JS API | 高德地图API

    室内地图 JavaScript API 简介 说明: 室内地图数据对新用户暂停开放,建议您使用 Javascript API 可实现室内外一体化效果. 高德室内地图 JavaScript API,是由 ...

最新文章

  1. 1136 A Delayed Palindrome 需再做
  2. 获取某个时间开始 之后的 N次[周几,周几]
  3. pycharm 快捷键介绍
  4. 手型显示html,css各种手型集合(css禁止手型)
  5. Vh和Vw的简介和使用
  6. 插入顶部_最快速地把同一内容插入到Word文档不同页面的相同位置
  7. 【编辑器】VSCode配置C++编译
  8. win8虚拟机_VMware15虚拟机软件安装包+安装教程
  9. for循环中包含跨服务查询优化
  10. AR实战开源项目——Miku和“极乐净土”
  11. 为什么要发布海外新闻稿,海外稿件怎么写
  12. 【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考
  13. 201919102004张雪婷(第三次作业)
  14. [M1]Daily Scum 10.8
  15. Paddle Quantum 量桨入门手册
  16. ECC(Elliptic Curve Cryptography)椭圆曲线密码详解
  17. 腾讯云人脸核身和人脸识别是什么
  18. Ubuntu18状态栏调整位置,放置在屏幕下方
  19. SuperMap iClient for OpenLayers图层组控制实现方法
  20. 解决“无法停止‘通用卷’设备的方法

热门文章

  1. java的lr词法编译器,自制编译器 青木峰郎 笔记 Ch3 词法分析的概要
  2. Java基础0308
  3. 2.6配置自定义PropertyEditors
  4. C++并发与多线程(二) 创建多个线程、数据共享问题分析、案例代码
  5. 【CoRL 2018】通过元策略优化的MBRL算法
  6. 三 Hibernate持久化状态主键生成策略
  7. 封装数据库增删该通用方法
  8. 算法复习——带修改莫队(bzoj2453)
  9. proFTPd的使用配置
  10. 总结篇——从零搭建maven多模块springboot+mybatis项目