新建工程
采用MapSDK开发iOS平台(iPhone/iPod Touch/iPad)下的地图应用程序,需要在XCode下建立相应的项目工程,本文档以建立iPhone上的项目工程作为示例。
新建 iphone 设备工程
1. 如图所示,新建iOS设备工程,选择Navigation-base Application类型,点击Choose,进行下一步。
2. 然后选择工程代码的存放路径如图所示,点击Save。
3. 至此就建立了一个iPhone平台下的项目工程目录,结果如图所示。
引用地图开发库
开发iOS设备上的地图功能需要引用的开发库主要包括文件libiMapSDKLib,iMapSDK目录下的头文件以及sa_types.h和ut_types.h还有htl的所有头文件等,添加引用方式如下。
1. 把libiMapSDKLib.a放在工程目录下,如图所示。
2. 把头文件放到文件夹include中,复制到工程目录下,如图所示。
3. 复制文件后,在XCode的工程目录中包含头文件到工程中,如图所示。
4. 然后在”Project->Edit Active Target ->Build->Linking”选项卡中设置代码编译时要连接的静态库的名称即libiMapSDKLib.a,如图所示。
5. 在Project->Edit Active Target ->Build->Search Path选项中设置头文件的include路径(Header Search Path)和静态库的连接路径(LibrarySearch Path),如图8所示。
6. 开发环境搭建完毕后,编译成功,点击”Run”,模拟器上可以运行一个空白的待开发iphone程序,如图所示。
地图显示
1. 在Demo工程的RootViewController中修改viewDidLoad方法,如图所示。
2. 编译代码后,在模拟器上运行程序,地图可以显示,如图所示。
地图移动、缩放
地图移动
MTMapView类里已经针对地图的移动做了处理,所以在iOS上采用MapSDK开发地图应用不需要针对地图的拖动和缩放再做处理。如图所示,用鼠标在模拟器上拖动地图,地图随着鼠标的移动而移动。
地图放大缩小
在模拟上用鼠标双击地图上的某点则地图放大,也可以在地图上同时按下option键+鼠标左键来控制地图的放大、缩小如图所示。
地图标注添加、删除
添加地图标注
1. 添加地图标注功能代码如下,如图所示。
2. 添加后,需要把标注图标放到运行目录下的res文件夹中,命名为pinRed.png,如图所示。
3. 运行显示效果如图所示。
删除地图标注
删除地图标注功能代码如下。
- if(annotation)
- {
- [mapremoveAnnotation:annotation];
- }
参数为要删除的标注的View指针。
地图辅助功能
绘制直线
绘制直线功能代码如图所示。
运行结果如下图所示:
绘制多边形
绘制多边形功能代码如图所示。
运行结果如图所示。
绘制圆
绘制圆功能代码如图所示。
运行结果如图所示。
清除地物覆盖物
清除全部地图覆盖物功能代码如下。
- [mapremoveOverlay:circleView];
- [mapremoveOverlay:polygonView];
- [map:removeOverlay:polylineView];
根据以上函数样式,传入参数为要删除的覆盖物的指针。运行工程,如上图所示对应的覆盖物。
地图查询
在iOS平台上利用MapSDK提供的查询接口实现查询功能,首先,接收查询结果的类需要继承MSearchDelegate协议,另外如果要想实现坐标反偏移的查询,还要实现GPSToOffsetByPoint_Delegate协议。示例代码如下:
- @interface SearchViewController:UITableViewController<msearchdelegate, gpstooffsetbypoint_delegate="">{
- }
- @end
由坐标点查询空间位置描述
该查询功能根据空间坐标点,查询该点的位置描述,包括该点所在省市区,周边的POI和道路等信息。示例代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MLONLAT poi;
- poi.X = XXXX.XXXX;
- poi.Y = YYYY.YYYY;
- MREGEOCODESEARCHOPTIONS options;
- [searchPoiToAddressByPoi:poiOptions:options];
然后在继承了MSearchDelegate的类里通过实现PoiToAddressResponse方法来接收和处理查询结果。
坐标点周边关键字查询
该查询功能根据中心点坐标,进行该中心点的周边关键字查询,示例代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MLONLAT poi;
- poi.X = XXXX.XXXX;
- poi.Y = YYYY.YYYY;
- MPOISEARCHOPTIONS options;
- [search PoiSearchByCenPoi:poi Keywords:@”XXXX” City:”北京”Options:options];
然后在继承了MSearchDelegate的类里通过实现PoiSearchResponse方法来接收和处理查询结果。
关键字周边的关键字查询
该功能实现在关键字周边进行关键字搜索查询,示例代码如下。
- Search* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MPOISEARCHOPTIONS options;
- [search PoiSearchByCenKeywors:@”XXXX”SearchKeywords:@”XXXX” City:”北京”Options:options];
然后在继承了MSearchDelegate的类里通过实现PoiSearchResponse方法来接收和处理查询结果。
两点间驾车导航路径查询
该功能实现在两个点之间查询驾车导航路径,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MLONLAT startPoi;
- startPoi.X = XXXX.XXXX;
- startPoi.Y = YYYY.YYYY;
- MLONLAT endPoi;
- endPoi.X = XXXX.XXXX;
- endPoi,Y = YYYY.YYYY;
- MAUTOSEARCHOPTIONS options;
- [searchRouteSearchByStartPoi:startPoiEndPoi:endPoiOptions:options];
然后在继承了MSearchDelegate的类里通过实现RouteSearchResponse方法来接收和处理查询结果。
导航距离计算
该功能实现导航路径的距离查询,输入参数为X,Y坐标的集合,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MAUTODISSEARCHOPTIONS options;
- [searchCalculaNaviDistanceByXPoint:@”XXXX” YPoint:@”YYYY”Options:options];
然后在继承了MSearchDelegate的类里通过实现CalculaNaviDistanceResponse方法来接收和处理查询结果。
两点间的公交导航查询
该功能查询两点之间的公交导航,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MLONLAT startPoi;
- startPoi.X = XXXX.XXXX;
- startPoi.Y = YYYY.YYYY;
- MLONLAT endPoi;
- endPoi.X = XXXX.XXXX;
- endPoi,Y = YYYY.YYYY;
- MBUSNAVISEARCHOPTIONS options;
- [searchBusSearchByStartPoi:startPoiEndPoi:endPoi City:@”北京”Options:options];
然后在继承了MSearchDelegate的类里通过实现BusNaviSearchResponse方法来接收和处理查询结果。
公交ID查询公交信息
该功能实现通过公交ID查询公交信息,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MBUSINFOSEARCHOPTIONS options;
- [search BusSearchByBusId:@”000000123456” City:”北京”Options:options];
然后在继承了MSearchDelegate的类里通过实现BusSearchResponse方法来接收和处理查询结果。
公交站点查询公交信息
该功能实现由公交站点名称查询公交信息,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MBUSINFOSEARCHOPTIONS options;
- [search BusSearchByBusStation:@”西直门” City:”北京”Options:options];
然后在继承了MSearchDelegate的类里通过实现BusSearchResponse方法来接收和处理查询结果。
公交名称查询公交信息
该功能实现由公交名称查询公交信息,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- MBUSINFOSEARCHOPTIONS options;
- [search BusSearchByBusName:@”917” City:”北京”Options:options];
然后在继承了MSearchDelegate的类里通过实现BusSearchResponse方法来接收和处理查询结果。
GPS真实坐标转换为偏移坐标
该功能实现GPS真实坐标转换为GPS偏移坐标,因为该查询在后台采用了多线程的执行方式所以查询参数的传递有别于其他查询接口使用方法如下。 (1)首先要使接收查询的类继承GPSToOffsetByPoint_Delegate协议,代码如下。
- @interfaceSearchViewController:UITableViewController<msearchdelegate, gpstooffsetbypoint_delegate="">{
- }
- @end
- </msearchdelegate,>
(2)然后在继承了GPSToOffsetByPoint_Delegate协议的类中要为查询参数实现赋值函数,代码如下。
- @implementtationSearchViewController
- @synthesize poiXY;
- @synthesize options;
- @end
(2)设置查询参数,并开始查询,代码如下。
- MSearch* search = [MSearchMSearchWithKey:@”XXXXXX”delegate:Delegate];
- Delegate.poiXY.X =XXXX.XXX; Delegate.poiXY.Y =YYYY.YYY; MCOORDINATESEARCHOPTIONSsearch_option;
- Delegate.options = search_option;
- [m_pSearchGPSToOffSetByPoint:Delegate];
继承了GPSToOffsetByPoint_Delegate的类里通过实现GPSToOffSetResponse方法来接收和处理查询结果。