电车算路
1. 导入头文件
- #import <NavinfoKit/NavinfoKit.h>
2. 配置APIKEY
参考工程配置说明。
3. 定义 NavinfoRouteSearch
定义主算路对象 NavinfoRouteSearch,并继承搜索协议<NavinfoRouteQueryDelegate>。
4. 构造 NavinfoRouteSearch
构造主搜索对象 NavinfoRouteSearch,并设置代理。
- NavinfoRouteSearch * routeSearch = [[NavinfoRouteSearch alloc] init]; routeSearch.delegate = self;
5. 设置发起电车算路参数
其中orig(起点坐标)vias(途经点坐标集可以为空)dest(终点坐标)query(算路类型)。capacity(充电桩充到多少电量)
- - (id)initEleCarWithorig:(NavinfoLonlat * _Nonnull)orig vias:(NSArray<NavinfoLonlat *> * _Nullable)vias dest:(NavinfoLonlat * _Nonnull)dest soc:(double)soc capacity:(double)capacity
6. 发起驾车算路
通过调用 NavinfoSearchRoute 的 startSearch 方法发起驾车算路查询。
- [search startSearchWith:query];
7. 在回调中处理数据
当查询成功时,会进到回调函数,通过回调函数,可获取算路的结果。
说明:
通过 response.routes获取驾车换乘方案集。
- - (void)onRouteSearch:(NavinfoRouteSearch * _Nonnull)routeSearch
- result:(NavinfoRouteResult * _Nullable)result
- error:(NSError * _Nullable)error {
- NSLog(@"----> onRouteSearch");
- }
8. 处理失败查询
当检索失败时,Error 会返回,通过该回调函数获取产生的失败的原因。
- - (void)onRouteSearch:(NavinfoRouteSearch * _Nonnull)routeSearch
- result:(NavinfoRouteResult * _Nullable)result
- error:(NSError * _Nullable)error {
- NSLog(@"----> onRouteSearch");
- }
代码示例:
- - (void)routeSearch:(NavinfoQueryType)type{
- NavinfoLonlat * busOrig = [[NavinfoLonlat alloc] initWith:11633930.3 latitude:4001116.0 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * busDest = [[NavinfoLonlat alloc] initWith:11645256.2 latitude:3993640.4 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * orig = [[NavinfoLonlat alloc] initWith:11634000 latitude:4045000 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * dest = [[NavinfoLonlat alloc] initWith:11635000 latitude:4054000 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * orig1 = [[NavinfoLonlat alloc] initWith:11645000 latitude:4034000 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * dest1 = [[NavinfoLonlat alloc] initWith:11646000 latitude:4035000 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * carOrig = [[NavinfoLonlat alloc] initWith:12161561 latitude:3891521 gbType:NavinfoGbTypeG02];
- NavinfoLonlat * carDest = [[NavinfoLonlat alloc] initWith:12151443 latitude:3884730 gbType:NavinfoGbTypeG02];
- NavinfoRouteQuery * query = nil;
- switch (type) {
- case QUERYTYPE_BUS:
- query = [[NavinfoRouteQuery alloc] initBusQueryWith:busOrig dest:busDest city:@"北京"];
- break;
- case QUERYTYPE_CAR:
- query = [[NavinfoRouteQuery alloc] initWithorig:carOrig vias:nil dest:carDest];
- break;
- case QUERYTYPE_ELE_CAR:
- query = [[NavinfoRouteQuery alloc] initEleCarWithorig:orig vias:nil dest:dest soc:20 capacity:40];
- break;
- case QUERYTYPE_BULK:
- query = [[NavinfoRouteQuery alloc] initBulkQueryWithorigs:@[orig,orig1] dests:@[dest,dest1]];
- break;
- default:
- break;
- }
- NavinfoRouteSearch * search = [[NavinfoRouteSearch alloc]init];
- search.delegate = self;
- [search startSearchWith:query];
- }
- - (void)onRouteSearch:(NavinfoRouteSearch * _Nonnull)routeSearch response:(NavinfoRouteResult * _Nullable)response
- error:(NSError * _Nullable)error{
- }
运行程序,效果图如下:


2. 配置APIKEY
参考工程配置说明。
3. 定义 NavinfoEleCarReachAreaSearch
定义电车行驶范围对象 NavinfoEleCarReachAreaSearch,并继承搜索协议<NavinfoEleCarReachAreaSearchQueryDelegate>。
4. 构造 NavinfoEleCarReachAreaSearch
构造主搜索对象 NavinfoEleCarReachAreaSearch,并设置代理。
- NavinfoEleCarReachAreaSearch * areaSearch = [[NavinfoEleCarReachAreaSearch alloc] init];
- areaSearch.delegate = self;
5. 设置发起电车行驶范围请求参数
匹路查询的请求参数类为 NavinfoEleCarAreaQuery,快捷构造NavinfoEleCarAreaQuery方法。其中必填参数 centerLonlat (自车位置),soc(电车当前电量)。
- - (id)initWithAreaCenter:(NavinfoLonlat *)centerLonlat soc:(double)soc;
6. 发起行驶范围请求
通过调用 NavinfoEleCarReachAreaSearch的 startSearchWith方法发起算路查询。
- [routeMatch startMatchWith:matchQuery];
7. 在回调中处理数据
当查询成功时,会进到回调函数,通过回调函数,可获取算路的结果。
说明:
通过 response.lonlats获取电车能够到达点的集合。
- - (void)onEleCarReachAreaSearch:(NavinfoEleCarReachAreaSearch * _Nonnull)routeSearch
- response:(NavinfoEleCarReachAreaResult * _Nullable)response
- error:(NSError * _Nullable)error;
8. 处理失败查询
当检索失败时,Error 会返回,通过该回调函数获取产生的失败的原因。
- - (void)onEleCarReachAreaSearch:(NavinfoEleCarReachAreaSearch * _Nonnull)routeSearch
- response:(NavinfoEleCarReachAreaResult * _Nullable)response
- error:(NSError * _Nullable)error{
- NSLog(@"Error: %@", error);
- }
代码示例:
- - (void)reachAreaTest{
- NavinfoLonlat * centerLonlat = [[NavinfoLonlat alloc]initWith:11637830 latitude:3989856 gbType:NavinfoGbTypeG02];
- NavinfoEleCarAreaQuery * areaQuery = [[NavinfoEleCarAreaQuery alloc]initWithAreaCenter:centerLonlat soc:30];
- NavinfoEleCarReachAreaSearch * areaSearch = [[NavinfoEleCarReachAreaSearch alloc]init];
- [areaSearch startSearchWith:areaQuery];
- }
- - (void)onEleCarReachAreaSearch:(NavinfoEleCarReachAreaSearch * _Nonnull)routeSearch
- response:(NavinfoEleCarReachAreaResult * _Nullable)response
- error:(NSError * _Nullable)error{
- NSLog(@"Error: %@", error);
- }
运行程序,效果如下图所示:
