Mapwize 2.5.0

Mapwize 2.5.0

测试已测试
Lang语言 Obj-CObjective C
许可 MIT
发布最后发布2018年3月

Mathieu GerardEtienne维护。



Mapwize 2.5.0

  • Mapwize

Mapwize

Version License Platform

这是Mapwize iOS SDK,版本2.3.x。

它允许您显示和交互Mapwize场所地图。

需求

iOS 8或更高版本

模拟器

模拟器似乎在Cookie管理方面存在问题,其行为与真实设备不同。如果您需要使用API从私有场所访问内容,请使用真实设备。

安装

Mapwize通过CocoaPods提供。要安装它,只需将以下行添加到您的Podfile中

pod 'Mapwize'

示例应用

本仓库提供了一个示例应用,位于MapwizeDemo。打开MapwizeDemo/MapwizeDemo.xcworkspace。

菜单列出了您可以对该地图执行的所有可能操作。

SDK通过CocoaPods安装。如果需要,请从MapwizeDemo中运行pod install以重置pods配置。

地图文档

显示地图

要显示Mapwize应用,首先创建一个MWZMapView实例,然后,在您的视图控制器中调用以下方法:

[map loadMapWithOptions: options];

这将根据提供的选项在视图中加载地图。

地图选项

选项使用MWZMapOptions类定义。以下选项可用:

  • apiKey: [NSString] 必须提供,以使地图加载。可以从Mapwize管理界面获取。如果没有,请联系我们。
  • mainColor: [NSString] 如果提供,则此颜色将用于替换地图wize颜色在UI组件中,如楼层控制器或方向。
  • bounds: [MWZBounds] 初始化后要显示的区域。
  • maxBounds: [MWZBounds] 用户允许导航的区域(默认:整个世界)。
  • center: [MWZCoordinate] 启动时地图中心的坐标(默认:0,0)。
  • zoom: [NSNumber] 介于0到21之间的整数(默认0)。
  • minZoom: [NSNumber] 可选的最小缩放等级,适用于限制可视区域。
  • floor: [NSNumber] 表示所需建筑物的楼层整数(默认0)。
  • locationEnabled: [BOOL] 布尔值,定义是否启动GPS并显示用户位置(默认:true)。
  • beaconsEnabled: [BOOL] 布尔值,定义是否打开iBeacon扫描器(默认:false)。
  • accessKey: [NSString] 选项,用于地图加载时使用,以确保在第一次显示地图时访问所需建筑。
  • language: [NSString] 选项,指定地图的首选语言。用于显示支持该语言的所有场所。
  • 显示用户位置控制 [BOOL] 显示地图右下角的用户位置按钮(默认:true)。
  • 显示楼层控制 [BOOL] 显示地图右下角的楼层控制器(默认:true)。
  • 显示标记选项 [MWZCustomMarkerOptions] 使用自定义标记图标而不是默认Mapwize标记图标。IconUrl、iconAnchor和iconSize必须定义。IconUrl必须是一个HTTPS URL。

移动地图

地图加载后,您可以在地图实例上使用以下函数

  • (void)fitBounds:(MWZBounds*)bounds; - 将地图移动以便指定的边界完整可见。
  • (void)centerOnCoordinates:(MWZCoordinate*)coordinate withZoom:(NSNumber*)zoom; 已废弃:- (void)centerOnCoordinates:(NSNumber*)latitude longitude:(NSNumber*)longitude floor:(NSNumber*)floor zoom:(NSNumber*)zoom;
  • (void)setFloor:(NSNumber*)floor;
  • (void)setZoom:(NSNumber*)zoom;
  • (void)centerOnVenue:(MWZVenue*)venue;
  • (void)centerOnVenueById:(NSString*)venueId;
  • (void)centerOnPlace:(MWZPlace*)place;
  • (void)centerOnPlaceById:(NSString*)placeId;
  • (void)centerOnUser:(NSNumber*)zoom;

获取地图状态

  • (NSNumber*)getFloor - 返回当前显示的楼层。
  • (NSArray*)getFloors - 返回当前观看位置可用的楼层列表。
  • (NSNumber*)getZoom - 返回当前的缩放级别。

用户位置

FollowUserMode定义了地图是否应该在用户移动时移动。

  • (BOOL)getFollowUserMode;
  • (void)setFollowUserMode:(BOOL)follow;

您可以使用以下方法获取/设置用户位置。有关用户位置测量原理的完整指南,请参阅Mapwize.js文档

  • (MWZUserPosition*)getUserPosition;
  • (void)setUserPosition:(MWZUserPosition*)userPosition; 已废弃:- (void)setUserPositionWithLatitude:(NSNumber*)latitude longitude:(NSNumber*)longitude floor:(NSNumber*)floor; 已废弃:- (void)setUserPositionWithLatitude:(NSNumber*)latitude longitude:(NSNumber*)longitude floor:(NSNumber*)floor accuracy:(NSNumber*)accuracy;
  • (void)newUserPositionMeasurement:(MWZMeasurement*)measurement;
  • (void)unlockUserPosition;
  • (void)removeUserPosition;

如果您没有手动设置用户位置,则需要请求位置授权。这可以通过以下代码完成

CLAuthorizationStatus状态=[CLLocationManager authorizationStatus];

如果 (状态 == kCLAuthorizationStatusAlwaysNotAllowed || 状态 ==kCLAuthorizationStatusหลังจากใช้งาน) { NSLog(@"位置授权已授予"); } 否则 { NSLog(@"请求位置授权"); [locationManager requestWhenInUseAuthorization]; }

别忘了在info.plist中添加kCLAuthorizationStatusAuthorizedWhenInUse或kCLAuthorizationStatusAuthorizedAlways字符串。

如果您在地图选项中将locationEnabled设置为false,您可以使用以下函数来控制位置:

  • (void) startLocationWithBeacons:(BOOL)useBeacons;
  • (void) stopLocation;

用户航向

当指南针可用时,显示用户正在看的方向可能很有趣。为此,可以使用setUserHeading方法,传入一个角度。例如,如果用户朝南看

  • (void) setUserHeading: (NSNumber*) heading;

要删除指南针的显示,只需将角度设置为null即可。

在示例应用程序中,您可以找到监听指南针变化并在地图上显示的代码示例。

使用Mapwize URL

您可以使用以下命令加载数据。有关完整文档,请参阅Mapwize URL方案

  • (void) loadURL: (NSString*) url;

添加标记

您可以在地图上添加标记。

  • (void) addMarkerWithCoordinate: (MWZCoordinate*) coordinate; 已弃用: - (void) addMarkerWithLatitude: (NSNumber*) latitude longitude:(NSNumber*) longitude floor:(NSNumber*) floor;
  • (void) addMarkerWithPlaceId: (NSString*) placeId;
  • (void) removeMarkers;

您可以使用地图选项替换默认的Mapwize标记图标,使用您自己的标记图标。请参阅地图选项以获取详细信息。

控制地点显示

您可以通过提升地点来提高它们的显示优先级。

  • (void) setPromotePlaces:(NSArray<MWZPlace*>*) places;
  • (void) setPromotePlacesWithIds:(NSArray<NSString*>*) placeIds;
  • (void) addPromotePlace:(MWZPlace*) place;
  • (void) addPromotePlaceWithId:(NSString*) placeId;
  • (void) addPromotePlaces:(NSArray<MWZPlace*>*) places;
  • (void) addPromotePlacesWithIds:(NSArray<NSString*>*) placeIds;
  • (void) removePromotePlace:(MWZPlace*) place;

您可以通过忽略地点来使它们不可见

  • (void) addIgnorePlace:(MWZPlace*) place;
  • (void) addIgnorePlaceWithId:(NSString*) placeId;
  • (void) removeIgnorePlace:(MWZPlace*) place;
  • (void) removeIgnorePlaceWithId:(NSString*) placeId;
  • (void) setIgnorePlaces:(NSArray<MWZPlace*>*) places;
  • (void) setIgnorePlacesWithIds:(NSArray<NSString*>*) placeIds;

您可以使用此方法添加来自自己的数据位置的。为了使其正常工作,您必须从您的数据创建一个符合Mapwize格式的位置对象,并将所有位置作为参数传递。

  • (void) setExternalPlaces: (NSArray<MWZPlace*>*) externalPlaces;

为了正确地使用提升和忽略方法,必须指定一个唯一标识符(MWZPlace.identifier)。

MWZPlace.geometry MWZPlace.venueId MWZPlace.floor MWZPlace.translations

要使用推广和忽略方法,您必须指定一个唯一id(MWZPlace.identifier)。

显示方向

要显示方向,可以使用

  • (void) startDirections: (MWZDirection*) direction;

一旦方向加载,方向将被显示,并触发事件 didStartDirections。

查看此文档的 ApiManager 部分,了解更多关于获取方向的信息。

要删除地图上的方向,使用

  • (void) stopDirections;

监听事件

您可以使用 MWZMapDelegate 协议监听地图发出的事件。要做到这一点,使用以下方式设置委托类:

map.delegate = self;

然后实现以下方法

  • (void) mapDidLoad: (MWZMapView*) map;
  • (void) map:(MWZMapView*) map didClick:(MWZCoordinate*) latlon;
  • (void) map:(MWZMapView*) map didClickOnPlace:(MWZPlace*) place;
  • (void) map:(MWZMapView*) map didClickOnVenue:(MWZVenue*) venue;
  • (void) map:(MWZMapView*) map didClickLong: (MWZCoordinate*) latlon;
  • (void) map:(MWZMapView*) map didClickOnMarker: (MWZCoordinate*) marker;
  • (void) map:(MWZMapView*) map didEnterVenue:(MWZVenue*) venue;
  • (void) map:(MWZMapView*) map didExitVenue:(MWZVenue*) venue;
  • (void) map:(MWZMapView*) map didChangeFloor:(NSNumber*) floor;
  • (void) map:(MWZMapView*) map didChangeFloors:(NSArray*) floors;
  • (void) map:(MWZMapView*) map didChangeZoom:(NSNumber*) floor;
  • (void) map:(MWZMapView*) map didMove:(MWZCoordinate*) center;
  • (void) map:(MWZMapView*) map didChangeUserPosition:(MWZCoordinate*) userPosition;
  • (void) map:(MWZMapView*) map didChangeFollowUserMode:(BOOL) followUserMode;
  • (void) map:(MWZMapView*) map didStartDirections: (NSString*) infos;
  • (void) map:(MWZMapView*) map didStopDirections: (NSString*) infos;
  • (void) map:(MWZMapView*) map didFailWithError: (NSError *)error;

在不可用网络连接或与地图的交互失败的情况下,将触发 didFailWithError。

编辑地点样式

地点的显示样式可以在SDK内部动态更改。为此,您可以使用:

  • (void) setStyle: (MWZStyle*) style forPlaceById: (NSString*) placeId;

宇宙

您可以使用以下方法更改地点的宇宙。

  • (void) setUniverseForVenue: (MWZVenue*) venue withUniverseId:(NSString*) universeId;
  • (void) setUniverseForVenue: (MWZVenue*) venue withUniverse:(MWZUniverse*) universeId;

设置顶部和底部边距

地图的部分区域往往会因为顶部或底部的横幅或控件而被遮挡。例如,如果您显示一个横幅以显示您刚刚点击的位置的详细信息,将横幅显示在地图上方通常比需要调整地图大小更好。

但是,您希望确保Mapwize控件始终可见,如跟随用户模式按钮和楼层选择器。此外,如果您执行fitBounds操作,区域将完全位于地图的可视部分。

为此,您可以在地图上设置顶部和底部边距。我们保证在那些边距区域内不会显示重要内容。

设置像素单位的边距:

  • (void) setBottomMargin: (NSNumber*) margin;
  • (void) setTopMargin: (NSNumber*) margin;

刷新缓存

为了避免在浏览地图时频繁发起网络请求,SDK会保存它已下载的一些数据。

缓存的存活时间(Time To Live)为5分钟。

如果您想强迫地图刷新缓存并更新自身,您可以随时调用刷新方法。

  • (void) refresh;

ApiManager 文档

Mapwize 对象和数据可以通过ApiManager单例不实例化地图即可检索。

在使用ApiManager之前,需要提供API密钥

[[MWZApiManager sharedManager] setApiKey:@"您的_api_key"];

请注意,API密钥必须同时提供给ApiManager和任何独立的MapView。

访问私有场所

要访问私有场所,请使用相关accessKey

  • (NSURLSessionDataTask *)getAccessWithAccessKey:(NSString *)accessKey success:(void (^)(void))success failure:(void (^)(NSError *error))failure;

访问密钥在Mapwize管理界面中管理,由场所管理员提供。

使用API获取访问权限,同时将在地图中使用访问权限。如果调用完成时地图已加载,您需要刷新地图。

获取场所

场所具有名称和别名属性,这使得比使用ID更容易以人类可读的方式识别它们。场所名称和别名在Mapwize平台上是唯一的。

要从ID、名称或别名获取场所对象,您可以使用以下方法。第一个方法允许传递带有关键字参数的字典,这些参数将直接与API请求一起发送。

  • (NSURLSessionDataTask )getVenues:(NSDictionary<NSString,NSString*>) options success:(void (^)(NSArray<MWZVenue> *venues))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getVenuesForOrganizationId:(NSString )organizationId success:(void (^)(NSArray<MWZVenue> *venues))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getVenueWithId:(NSString *)requestId success:(void (^)(MWZVenue *venue))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getVenueWithName:(NSString *)name success:(void (^)(MWZVenue *venue))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getVenueWithAlias:(NSString *)alias success:(void (^)(MWZVenue *venue))success failure:(void (^)(NSError *error))failure;

获取地点

地点具有ID、名称和别名,类似于场所。ID在整个mapwize平台上是唯一的,但名称和别名在每个场所内是唯一的。

要从ID、名称或别名获取一个地点对象,可以使用以下方法。第一个方法允许传递一个带有过滤参数的字典,这些参数将直接与API请求一起发送。

  • (NSURLSessionDataTask )getPlaces:(NSDictionary<NSString,NSString*>) options success:(void (^)(NSArray<MWZPlace> *places))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getPlaceWithId:(NSString *)requestId success:(void (^)(MWZPlace *place))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getPlaceWithName:(NSString )name inVenue:(MWZVenue) venue success:(void (^)(MWZPlace *place))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getPlaceWithAlias:(NSString )alias inVenue:(MWZVenue) venue success:(void (^)(MWZPlace *place))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask )getPlacesForVenue:(MWZVenue )venue withOptions:(NSDictionary) options success:(void (^)(NSArray<MWZPlace>* places))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask )getPlacesForPlaceList:(MWZPlaceList )placeList success:(void (^)(NSArray<MWZPlace> places))success failure:(void (^)(NSError *error))failure;

获取地点列表

地点列表与地点具有相同的行为。您可以使用以下方法。第一个方法允许传递一个带有过滤参数的字典,这些参数将直接与API请求一起发送。

  • (NSURLSessionDataTask )getPlaceLists:(NSDictionary<NSString,NSString*>) options success:(void (^)(NSArray<MWZPlaceList> *placeLists))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getPlaceListWithId:(NSString *)requestId success:(void (^)(MWZPlaceList *placeList))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getPlaceListWithName:(NSString )name inVenue:(MWZVenue) venue success:(void (^)(MWZPlaceList *placeList))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask *)getPlaceListWithAlias:(NSString )alias inVenue:(MWZVenue) venue success:(void (^)(MWZPlaceList *placeList))success failure:(void (^)(NSError *error))failure;

  • (NSURLSessionDataTask )getPlaceListsForVenue:(MWZVenue )venue success:(void (^)(NSArray<MWZPlaceList> placeLists))success failure:(void (^)(NSError *error))failure;

获取方向信息

要从一个地点到另一个地点请求方向,可能还有中间的waypoints(途点),可以使用以下方法

  • (NSURLSessionDataTask )getDirectionsFrom:(id) from to:(id) to by: (NSArray<id>) waypoints withOptions:(MWZDirectionOptions*) options success:(void (^)(MWZDirection *direction))success failure:(void (^)(NSError *error))failure;

from : 方向的起点。可以是 MWZPlace、MWZCoordinate 或 MWZUserPosition。to : 目的地。可以是 MWZPlace、MWZPlaceList、MWZCoordinate 或 MWZUserPosition。waypoint : 中间方向点的数组和。可以包含 MWZPlace、MWZCoordinate 或 MWZUserPosition。

  • (NSURLSessionDataTask )getDirectionsFrom:(id) from oneOfTo:(NSArray<id>) to by: (NSArray<id>) waypoints withOptions:(MWZDirectionOptions) options success:(void (^)(MWZDirection *direction))success failure:(void (^)(NSError *error))failure;

使用此方法时,方向引擎将使用 'oneOfTo' 参数的最近点作为目的地。起始点:方向的起始点。可以是 MWZPlace、MWZCoordinate 或 MWZUserPosition。oneOfTo:目的地点的数组。可以包含 MWZPlace、MWZCoordinate 或 MWZUserPosition。中间方向点:中间方向点的数组。可以包含 MWZPlace、MWZCoordinate 或 MWZUserPosition

方向选项

  • isAccessible:[BOOL] 布尔值,定义方向是否应避开行动不便者的不可达路线。
  • waypointOptimize:[BOOL] 布尔值,定义方向引擎是否应优化航点顺序以返回最短路径。

搜索引擎

MWZVenue、MWZPlace 和 MWZPlaceList 是可搜索对象。可以通过搜索方法检索。

- (NSURLSessionDataTask *)search:(MWZSearchParams*) params success:(void (^)(NSArray<id>*)) success failure:(void (^)(NSError *error))failure;

搜索参数按照以下方式构建

NSString *query;           // The query string used for the search
NSString *venueId;         // If specified, restricts the search to this venue
NSString *organizationId;  // If specified, restricts the search to this organization
NSString *universeId;      // If specified, restricts the search to this universe

联系

如有任何帮助需求,请通过以下邮箱联系我们:[email protected]

许可协议

Mapwize 遵循 MIT 许可协议。有关更多信息,请参阅 LICENSE 文件。