有什么用c#做下载c car导航地图(地图)的思路吗

有什么用c#做导航(地图)的思路吗?_c#吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:98,558贴子:
有什么用c#做导航(地图)的思路吗?收藏
想用c#实现一个类似百度地图的那种路线图的样子的导航(地图),但是没做过导航,想问问各位有没有什么好的思路或者可以参考的例子吗?
防止二次污染,含汞废物处置就找铜仁银湖化工
你想去哪?哥陪你
百度地图API ?
你莫目测只能用API
应该是可以调用其它的API的 我们这边一个自行车项目就有这方面的东西。但是不能给你你懂的
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或打开系统自带地图的导航,必须要告诉自带的地图起始点和目的地,自带的地图又不会自己知道你想怎么走。
我们的思路大致上是:获取我们想要导航的起始点和目的地,通过反地址编码获得两个地址的地理信息(地图总归不能自己根据汉字就知道该怎么做的吧),将地理信息封装或则不封装(假设我们并不知道要不要封装,做之前谁都不会,这是肯定的)传递给自带地图(传递的方法现在假设还不知道,后面会有讲到)。
开始我们的编码吧!
1.搭建界面
  首先搭建我们界面,这个步骤繁琐而简单,对于老程序员或许不屑于为之,但是能把简单的事情做好就是不简单,再怎么熟悉你能保证每次做都不会出错吗,所以一定要认真对待每一步。
  必须要输入起始地和目的地吧,那就拖两个textView进去。再拖一个导航开始的Button进去,将这三个控件连线到相应的控制器。有时,为了迎合主流地图软件傻瓜式的操作,我们在其实地点的输入框右侧加一个设置"起始点"为"当前位置"的按钮。
  形成的界面和代码如下:
下面是拖线之后的代码:
@property (weak, nonatomic) IBOutlet UITextField *startF//其实地点的输入框
@property (weak, nonatomic) IBOutlet UITextField *endF//目的地的输入框
- (IBAction)//(右侧&current&按钮操作)获取当前位置
- (IBAction)startN//&开始导航&按钮操作
2. 创建解析器
  假设没有这个解析器,你告诉我该怎么做,没思路是吗,所以我告诉你,我们需要这个解析器。
  有了界面之后,第二部就是解析出"汉字"中的"地理信息",只有这些特殊的"地理信息",地图才能够识别,传给它汉字它要是能识别,就没人做导航了。
  不知道你不知不知道,从"汉字"获取地理信息,叫做"反地理编码",当然还有"地理编码"(知道地理信息,其实就是经度和纬度两个值,经过编码器获取地名等一些关于编码出的地点的其他信息。如需更多信息,请参照其他人的文章).
  我们提到编码器,其实就是这个:
@property (strong, nonatomic) CLGeocoder *
  为了保持它不被销毁,设置为strong。
  我们让它成为懒加载对象
1 - (CLGeocoder *)geocoder
if (_geocoder == nil) {
self.geocoder = [[CLGeocoder alloc] init];
3. 获取地理信息,打开地图
   那现在编码器也有了,就可以获取地理信息了。
  这段比较长,可能难理解,但是代码很顺畅,好好看。别问我为什么不好好一句一句写,累了,手疼
  下面是代码,无码无真相:
1 - (IBAction)startNavigation {//这个函数就是我们"开始导航"的操作函数  
[self.geocoder geocodeAddressString:self.endField.text completionHandler:^(NSArray *placemarks, NSError *error) {//编码器拿到string类型的地名进行反编码,完了之后调用completionhandler块代码,传入反编码的结果NSArray和错误信息
if (error) return;//如果发编码有错误,后面也就不用进行了,直接返回
CLPlacemark *placemark = [placemarks firstObject];//能够到这里说明没有错误,那我们取出众多结果中最有可信度的(也就是第一个,人们习惯把最好的放在前面),先不要管CLPlacemark是什么,想知道的话百度下就知道了。
//下面我们封装获得的地理结果,看得出我们至获取了目的地的地理信息,那是因为我们默认使用当前位置,也就是你输入了起始地我们也没用,你想用可以根据代码自己编写
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];//有简单的方法把当前位置封装到MKMapItem中
MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithPlacemark:placemark]];//地理信息"placemark"封装到"MKPlacemark"中,"MKPlacemark"被封装到"MKMapItem"中,还真是封装了好几层,没办法,mapView只识别"MKMapItem"
//下面建立一个可变字典,选择你要对自带地图所做的操作属性,讲这个字典传给地图就行了,还真是神奇
NSMutableDictionary *options = [NSMutableDictionary dictionary];
options[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeD//自驾模式
options[MKLaunchOptionsShowsTrafficKey] = @YES;//开启导航
[MKMapItem openMapsWithItems:@[currentLocation, toLocation] launchOptions:options];
}];//withItems看得出地图只是别MKMapItem对象。最后只用了一句话打开地图,他妈的只用了一句话。
我的运行截图
  其他的代码文件压根没动过,只在ViewController和main.storyboard里面进行编码和拖拽了
ViewController.m
预习-05-苹果自带地图
#import "ViewController.h"
#import &CoreLocation/CoreLocation.h&
#import &MapKit/MapKit.h&
@interface ViewController ()
@property (strong, nonatomic) CLGeocoder *
@property (weak, nonatomic) IBOutlet UITextField *startF
@property (weak, nonatomic) IBOutlet UITextField *endF
- (IBAction)
- (IBAction)startN
@implementation ViewController
- (CLGeocoder *)geocoder
if (_geocoder == nil) {
self.geocoder = [[CLGeocoder alloc] init];
- (void)viewDidLoad
[super viewDidLoad];
- (IBAction)current {
- (IBAction)startNavigation {
[self.geocoder geocodeAddressString:self.endField.text completionHandler:^(NSArray *placemarks, NSError *error) {
if (error) return;
CLPlacemark *placemark = [placemarks firstObject];
MKMapItem *currentLocation = [MKMapItem mapItemForCurrentLocation];
MKMapItem *toLocation = [[MKMapItem alloc] initWithPlacemark:[[MKPlacemark alloc] initWithPlacemark:placemark]];
NSMutableDictionary *options = [NSMutableDictionary dictionary];
options[MKLaunchOptionsDirectionsModeKey] = MKLaunchOptionsDirectionsModeD
options[MKLaunchOptionsShowsTrafficKey] = @YES;
[MKMapItem openMapsWithItems:@[currentLocation, toLocation] launchOptions:options];
不服者请留言 !!!
阅读(...) 评论()需要用C#和Mapxtreme对map做一些操作 - GIS当前位置:& &&&需要用C#和Mapxtreme对map做一些操作需要用C#和Mapxtreme对map做一些操作&&网友分享于:&&浏览:22次需要用C#和Mapxtreme对地图做一些操作功能很简单,窗体加载时显示一张地图,从access数据库中提取点的坐标并将点显示出来,用户可放大、缩小地图,可添加、删除、移动点,点的形状可由用户选择,有鹰眼图与主图对应&
我没有用过Mapxtreme,C#也刚学没多久,希望各位能给我点思路,帮我尽快入门,下面是我的一些疑问,可能有些比较幼稚,各位别见怪&
1、tab文件和gst文件有什么区别?&
我现在的地图文件是bmp格式的,使用mapinfo导成tab格式的,在C#中可以加载但我看Mapxtreme的一些自带的例子中有点对象的好象都是加载gst格式的文件,我有点搞糊涂了&
2.如何在小图中控制大图实现鹰眼的功能?&------解决方案--------------------tab文件是存各类地图数据的.一般一个tab对应一个地图图层.
gst将多个tab文件组织到一起,对每个图层设置样式等,形成一个完成的地图集
鹰眼无非就是获取一个地图中的地理位置,然后对应设置另一个地图的显示范围..------解决方案--------------------朋友你挺认真的。说点我知道的东西:&
1、tab文件是MAPINFO的数据格式,gst是用MAPXTREME的Workspace管理器保存的格式,在MAPXTREME的Workspace管理器下打开TAB格式的文件,重新保存就可以生成GST的;&
2、4没有做过;&
3、新添加一个图层,.cn上有详细的资料;&
5、.cn也有鹰眼的资料,自己找找吧。&
12345678910
12345678910
12345678910 上一篇:下一篇:文章评论相关解决方案 12345678910 Copyright & &&版权所有

我要回帖

更多关于 凯立德导航地图c1204 的文章

 

随机推荐