高德地图Windowphone API学习-地图定位与地图模式的切换
高德地图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学习-地图定位与地图模式的切换相关推荐
- 关于百度地图js api的getCurrentPosition定位不准确的解决方法
关于百度地图js api的getCurrentPosition定位不准确的解决方法 参考文章: (1)关于百度地图js api的getCurrentPosition定位不准确的解决方法 (2)http ...
- 高德地图 Android API 的基站定位原理及使用方法
基站定位是根据通讯网络基站信息进行定位的方法,此定位方法需要有较丰富的基站地理信息数据支持.高德地图目前的基站数据库支持 GSM 网络和CDMA网络. 定位机制 Android 平台主要使用三个 Cl ...
- js 调用android定位,基于html5+ 高德地图JS API使用安卓定位sdk用来进行定位
使用Native.js打开Android的H5辅助定位 mui.plusReady(function() { if(plus.os.name == 'Android') { var AMapLocat ...
- 百度地图JavaScript API 学习之浏览器定位
浏览器定位示例 百度地图API官方的所有demo示例--请直戳这里 官方浏览器定位demo示例--请直戳这里 后来发现的问题,这里记录一下: 在使用百度地图JS API时,无意中发现谷歌浏览器的浏览器 ...
- 百度地图JavaScript API 学习之添加控件
创建地图之添加控件 官方demo示例和讲解--直戳这里 这个案例就比较简单了,只需要在地图展示的基础上,添加一些与地图控件相关的代码就行了. 说明: 1.可以使用Map.addControl()方法向 ...
- 百度地图JavaScript API 学习之根据IP定位
IP定位示例 官方浏览器定位demo示例--请直戳这里 代码示例 <!DOCTYPE html> <html lang="en"> <head> ...
- 百度地图JavaScript API 学习之地址解析
获取地图数据之地址解析 首先我们需要知道如何进行地址解析以及有哪些地址解析的方式. 其实,百度地图API给我们提供了2种解析方式:地址解析和逆地址解析. 下面我们来认识一下它们.[官方的介绍地址请点这 ...
- 百度地图JavaScript API 学习之自定义标注图标(一)
地图绘制之添加自定义标注图标(一) 通过Icon类可实现自定义标注的图标.附上Icon的类参考链接,自行查看 官方提供了两种方法: 通过参数MarkerOptions的icon属性进行设置 使用Mar ...
- js室内地图开发_入门指南-室内地图 JS API | 高德地图API
快速入门将带您迅速了解高德地图室内JS API的基本使用,学习如何创建和设置地图,是您在最短时间内成为JS API的开发者. 第1步 准备页面 在正式开始开发地图应用之前,您需要做如下几步: 申请JS ...
- js室内地图开发_概述-室内地图 JS API | 高德地图API
室内地图 JavaScript API 简介 说明: 室内地图数据对新用户暂停开放,建议您使用 Javascript API 可实现室内外一体化效果. 高德室内地图 JavaScript API,是由 ...
最新文章
- 1136 A Delayed Palindrome 需再做
- 获取某个时间开始 之后的 N次[周几,周几]
- pycharm 快捷键介绍
- 手型显示html,css各种手型集合(css禁止手型)
- Vh和Vw的简介和使用
- 插入顶部_最快速地把同一内容插入到Word文档不同页面的相同位置
- 【编辑器】VSCode配置C++编译
- win8虚拟机_VMware15虚拟机软件安装包+安装教程
- for循环中包含跨服务查询优化
- AR实战开源项目——Miku和“极乐净土”
- 为什么要发布海外新闻稿,海外稿件怎么写
- 【不三不四的脑洞】“被相亲对象拉黑“所引发的关于链表合并算法的思考
- 201919102004张雪婷(第三次作业)
- [M1]Daily Scum 10.8
- Paddle Quantum 量桨入门手册
- ECC(Elliptic Curve Cryptography)椭圆曲线密码详解
- 腾讯云人脸核身和人脸识别是什么
- Ubuntu18状态栏调整位置,放置在屏幕下方
- SuperMap iClient for OpenLayers图层组控制实现方法
- 解决“无法停止‘通用卷’设备的方法