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

完善 ios 离线地图

parent 5f5d375c
......@@ -9,9 +9,9 @@ export default class IndoorExample extends Component {
async componentDidMount() {
console.log(await Offline.getProvinces())
// Offline.remove('铜陵市')
Offline.download('河源市')
Offline.addDownloadListener(data => console.log(data))
Offline.remove('香港特别行政区')
Offline.download('香港特别行政区')
}
render() {
......
#import <React/RCTBridgeModule.h>
#import <React/RCTEventEmitter.h>
#import <MAMapKit/MAOfflineMap.h>
#pragma ide diagnostic ignored "OCUnusedClassInspection"
@interface AMapOffline : NSObject <RCTBridgeModule>
@interface AMapOffline : RCTEventEmitter <RCTBridgeModule>
@end
@implementation AMapOffline
......@@ -47,10 +48,29 @@ RCT_REMAP_METHOD(getCities,
RCT_EXPORT_METHOD(download:(NSString *)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) {
[MAOfflineMap.sharedOfflineMap downloadItem: item
[MAOfflineMap.sharedOfflineMap downloadItem:item
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) {
return nil;
}
- (NSString *)stateString:(MAOfflineItemStatus)code {
NSString *state = @"";
if (code == MAOfflineItemStatusCached) {
state = @"downloading";
}
if (code == MAOfflineItemStatusExpired) {
state = @"expired";
- (NSString *)downloadStateString:(MAOfflineMapDownloadStatus)code {
switch (code) {
case MAOfflineMapDownloadStatusWaiting: return @"waiting";
case MAOfflineMapDownloadStatusStart: return @"downloading";
case MAOfflineMapDownloadStatusProgress: return @"downloading";
case MAOfflineMapDownloadStatusCompleted: return @"unzip";
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 {
......@@ -99,4 +126,8 @@ RCT_EXPORT_METHOD(download:(NSString *)name) {
};
}
- (NSArray<NSString *> *)supportedEvents {
return @[@"download"];
}
@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