Commit 4d9cbdea authored by 7c00's avatar 7c00

完善 ios 离线地图

parent 5f5d375c
...@@ -9,9 +9,9 @@ export default class IndoorExample extends Component { ...@@ -9,9 +9,9 @@ export default class IndoorExample extends Component {
async componentDidMount() { async componentDidMount() {
console.log(await Offline.getProvinces()) console.log(await Offline.getProvinces())
// Offline.remove('铜陵市')
Offline.download('河源市')
Offline.addDownloadListener(data => console.log(data)) Offline.addDownloadListener(data => console.log(data))
Offline.remove('香港特别行政区')
Offline.download('香港特别行政区')
} }
render() { render() {
......
#import <React/RCTBridgeModule.h> #import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>
#import <MAMapKit/MAOfflineMap.h> #import <MAMapKit/MAOfflineMap.h>
#pragma ide diagnostic ignored "OCUnusedClassInspection" #pragma ide diagnostic ignored "OCUnusedClassInspection"
@interface AMapOffline : NSObject <RCTBridgeModule> @interface AMapOffline : RCTEventEmitter <RCTBridgeModule>
@end @end
@implementation AMapOffline @implementation AMapOffline
...@@ -47,10 +48,29 @@ RCT_REMAP_METHOD(getCities, ...@@ -47,10 +48,29 @@ RCT_REMAP_METHOD(getCities,
RCT_EXPORT_METHOD(download:(NSString *)name) { RCT_EXPORT_METHOD(download:(NSString *)name) {
MAOfflineItem *item = [self getItem:name]; MAOfflineItem *item = [self getItem:name];
void (^downloadBlock)(MAOfflineItem *, MAOfflineMapDownloadStatus, id)=^(MAOfflineItem *downloadItem, MAOfflineMapDownloadStatus state, id info) {
NSDictionary *data = (NSDictionary *) info;
double progress = 0;
if (state == MAOfflineMapDownloadStatusProgress) {
progress = [data[MAOfflineMapDownloadReceivedSizeKey] doubleValue] / [data[MAOfflineMapDownloadExpectedSizeKey] doubleValue] * 100;
}
[self sendEventWithName:@"download" body:@{
@"name": name,
@"state": [self downloadStateString:state],
@"progress": @(progress),
}];
};
if (item != nil) { if (item != nil) {
[MAOfflineMap.sharedOfflineMap downloadItem: item [MAOfflineMap.sharedOfflineMap downloadItem:item
shouldContinueWhenAppEntersBackground:YES shouldContinueWhenAppEntersBackground:YES
downloadBlock:nil]; downloadBlock:downloadBlock];
}
}
RCT_EXPORT_METHOD(remove:(NSString *)name) {
MAOfflineItem *item = [self getItem:name];
if (item != nil) {
[MAOfflineMap.sharedOfflineMap deleteItem:item];
} }
} }
...@@ -77,18 +97,25 @@ RCT_EXPORT_METHOD(download:(NSString *)name) { ...@@ -77,18 +97,25 @@ RCT_EXPORT_METHOD(download:(NSString *)name) {
return nil; return nil;
} }
- (NSString *)stateString:(MAOfflineItemStatus)code { - (NSString *)downloadStateString:(MAOfflineMapDownloadStatus)code {
NSString *state = @""; switch (code) {
if (code == MAOfflineItemStatusCached) { case MAOfflineMapDownloadStatusWaiting: return @"waiting";
state = @"downloading"; case MAOfflineMapDownloadStatusStart: return @"downloading";
} case MAOfflineMapDownloadStatusProgress: return @"downloading";
if (code == MAOfflineItemStatusExpired) { case MAOfflineMapDownloadStatusCompleted: return @"unzip";
state = @"expired"; case MAOfflineMapDownloadStatusUnzip: return @"unzip";
case MAOfflineMapDownloadStatusFinished: return @"downloaded";
default: return @"";
} }
if (code == MAOfflineItemStatusInstalled) { }
state = @"downloaded";
- (NSString *)stateString:(MAOfflineItemStatus)code {
switch (code) {
case MAOfflineItemStatusCached: return @"downloading";
case MAOfflineItemStatusExpired: return @"expired";
case MAOfflineItemStatusInstalled: return @"downloaded";
default: return @"";
} }
return state;
} }
- (NSDictionary *)itemData:(MAOfflineCity *)city { - (NSDictionary *)itemData:(MAOfflineCity *)city {
...@@ -99,4 +126,8 @@ RCT_EXPORT_METHOD(download:(NSString *)name) { ...@@ -99,4 +126,8 @@ RCT_EXPORT_METHOD(download:(NSString *)name) {
}; };
} }
- (NSArray<NSString *> *)supportedEvents {
return @[@"download"];
}
@end @end
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment