Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
R
react-native-amap3d
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
放牛的园子
react-native-amap3d
Commits
3a4d6937
Commit
3a4d6937
authored
Aug 22, 2017
by
7c00
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
优化 iOS 导航代码
parent
4f47386b
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
89 additions
and
161 deletions
+89
-161
AMapDriveManager.m
ios/AMapDriveManager.m
+18
-55
AMapNavigationManager.h
ios/AMapNavigationManager.h
+37
-0
AMapRideManager.m
ios/AMapRideManager.m
+17
-53
AMapWalkManager.m
ios/AMapWalkManager.m
+17
-53
No files found.
ios/AMapDriveManager.m
View file @
3a4d6937
#import <React/RCTUIManager.h>
#import <AMapNaviKit/AMapNaviDriveView.h>
#import <AMapNaviKit/AMapNaviDriveManager.h>
#import "AMapNavigationManager.h"
#import "AMapDrive.h"
#pragma ide diagnostic ignored "OCUnusedClassInspection"
@interface
AMapDriveManager
:
RCTViewManager
<
AMapNaviDriveManagerDelegate
>
+
(
AMapDrive
*
)
drive
View
;
+
(
AMapNaviDriveManager
*
)
drive
Manager
;
+
(
AMapDrive
*
)
navigation
View
;
+
(
AMapNaviDriveManager
*
)
navigation
Manager
;
@end
@implementation
AMapDriveManager
{
AMapDrive
*
_driveView
;
AMapNaviDriveManager
*
_driveManager
;
}
-
(
instancetype
)
init
{
if
(
self
=
[
super
init
])
{
_driveView
=
[
AMapDriveManager
driveView
];
_driveManager
=
[
AMapDriveManager
driveManager
];
_driveManager
.
delegate
=
self
;
}
return
self
;
AMapDrive
*
_navigationView
;
AMapNaviDriveManager
*
_navigationManager
;
}
RCT_EXPORT_MODULE
()
INIT
(
AMapDriveManager
)
NAVIGATION_VIEW
(
AMapDrive
)
NAVIGATION_MANAGER
(
AMapDriveManager
,
AMapNaviDriveManager
)
RCT_EXPORT_VIEW_PROPERTY
(
onCalculateRouteSuccess
,
RCTBubblingEventBlock
)
RCT_EXPORT_VIEW_PROPERTY
(
onCalculateRouteFailure
,
RCTBubblingEventBlock
)
RCT_EXPORT_METHOD
(
calculateRoute
:
(
nonnull
NSNumber
*
)
reactTag
start
:
(
AMapNaviPoint
*
)
start
end
:
(
AMapNaviPoint
*
)
end
way
:
(
NSArray
<
AMapNaviPoint
*>
*
)
way
)
{
[
self
.
bridge
.
uiManager
addUIBlock
:
^
(
RCTUIManager
*
uiManager
,
NSDictionary
<
NSNumber
*
,
UIView
*>
*
viewRegistry
)
{
[
_driveManager
calculateDriveRouteWithStartPoints
:@[
start
]
RCT_EXPORT_METHOD
(
calculateRoute
:
(
nonnull
NSNumber
*
)
reactTag
start
:
(
AMapNaviPoint
*
)
start
end
:
(
AMapNaviPoint
*
)
end
way
:
(
NSArray
<
AMapNaviPoint
*>
*
)
way
)
{
[
_navigationManager
calculateDriveRouteWithStartPoints
:@[
start
]
endPoints
:@[
end
]
wayPoints:
nil
wayPoints
:
way
drivingStrategy
:
AMapNaviDrivingStrategySingleDefault
];
}];
}
RCT_EXPORT_METHOD
(
start
:
(
nonnull
NSNumber
*
)
reactTag
)
{
[
self
.
bridge
.
uiManager
addUIBlock
:
^
(
RCTUIManager
*
uiManager
,
NSDictionary
<
NSNumber
*
,
UIView
*>
*
viewRegistry
)
{
[
_driveManager
startGPSNavi
];
}];
}
-
(
UIView
*
)
view
{
return
_driveView
;
}
-
(
void
)
driveManagerOnCalculateRouteSuccess
:
(
AMapNaviDriveManager
*
)
driveManager
{
if
(
_
drive
View
.
onCalculateRouteSuccess
)
{
_
drive
View
.
onCalculateRouteSuccess
(
nil
);
if
(
_
navigation
View
.
onCalculateRouteSuccess
)
{
_
navigation
View
.
onCalculateRouteSuccess
(
nil
);
}
}
-
(
void
)
driveManager
:
(
AMapNaviDriveManager
*
)
driveManager
onCalculateRouteFailure
:
(
NSError
*
)
error
{
if
(
_
drive
View
.
onCalculateRouteFailure
)
{
_
drive
View
.
onCalculateRouteFailure
(@{
if
(
_
navigation
View
.
onCalculateRouteFailure
)
{
_
navigation
View
.
onCalculateRouteFailure
(@{
@"code"
:
@
(
error
.
code
),
});
}
}
+
(
AMapNaviDriveManager
*
)
driveManager
{
static
AMapNaviDriveManager
*
driveManager
;
if
(
driveManager
==
nil
)
{
driveManager
=
[
AMapNaviDriveManager
new
];
[
driveManager
addDataRepresentative
:[
AMapDriveManager
driveView
]];
}
return
driveManager
;
}
+
(
AMapDrive
*
)
driveView
{
static
AMapDrive
*
driveView
;
if
(
driveView
==
nil
)
{
driveView
=
[
AMapDrive
new
];
}
return
driveView
;
}
@end
ios/AMapNavigationManager.h
0 → 100644
View file @
3a4d6937
#define INIT(clazz) \
- (instancetype)init { \
if (self = [super init]) { \
_navigationView = [clazz navigationView]; \
_navigationManager = [clazz navigationManager]; \
_navigationManager.delegate = self; \
} \
return self; \
} \
\
- (UIView *)view { \
return _navigationView; \
} \
\
RCT_EXPORT_MODULE() \
RCT_EXPORT_VIEW_PROPERTY(onCalculateRouteSuccess, RCTBubblingEventBlock) \
RCT_EXPORT_VIEW_PROPERTY(onCalculateRouteFailure, RCTBubblingEventBlock) \
RCT_EXPORT_METHOD(start:(nonnull NSNumber *)reactTag) { \
[_navigationManager startGPSNavi]; \
} \
#define NAVIGATION_VIEW(type) \
+ (type *)navigationView { \
static type *view; \
if (view == nil) view = [type new]; \
return view; \
} \
#define NAVIGATION_MANAGER(clazz, type) \
+ (type *)navigationManager { \
static type *manager; \
if (manager == nil) { \
manager = [type new]; \
[manager addDataRepresentative:[clazz navigationView]]; \
} \
return manager; \
} \
ios/AMapRideManager.m
View file @
3a4d6937
#import <React/RCTUIManager.h>
#import <AMapNaviKit/AMapNaviRideView.h>
#import <AMapNaviKit/AMapNaviRideManager.h>
#import "AMapNavigationManager.h"
#import "AMapRide.h"
#pragma ide diagnostic ignored "OCUnusedClassInspection"
@interface
AMapRideManager
:
RCTViewManager
<
AMapNaviRideManagerDelegate
>
+
(
AMapRide
*
)
ride
View
;
+
(
AMapNaviRideManager
*
)
ride
Manager
;
+
(
AMapRide
*
)
navigation
View
;
+
(
AMapNaviRideManager
*
)
navigation
Manager
;
@end
@implementation
AMapRideManager
{
AMapRide
*
_
ride
View
;
AMapNaviRideManager
*
_
ride
Manager
;
AMapRide
*
_
navigation
View
;
AMapNaviRideManager
*
_
navigation
Manager
;
}
-
(
instancetype
)
init
{
if
(
self
=
[
super
init
])
{
_rideView
=
[
AMapRideManager
rideView
];
_rideManager
=
[
AMapRideManager
rideManager
];
_rideManager
.
delegate
=
self
;
}
return
self
;
}
RCT_EXPORT_MODULE
()
RCT_EXPORT_VIEW_PROPERTY
(
onCalculateRouteSuccess
,
RCTBubblingEventBlock
)
RCT_EXPORT_VIEW_PROPERTY
(
onCalculateRouteFailure
,
RCTBubblingEventBlock
)
RCT_EXPORT_METHOD
(
calculateRoute
:
(
nonnull
NSNumber
*
)
reactTag
start
:
(
AMapNaviPoint
*
)
start
end
:
(
AMapNaviPoint
*
)
end
)
{
[
self
.
bridge
.
uiManager
addUIBlock
:
^
(
RCTUIManager
*
uiManager
,
NSDictionary
<
NSNumber
*
,
UIView
*>
*
viewRegistry
)
{
[
_rideManager
calculateRideRouteWithStartPoint
:
start
endPoint
:
end
];
}];
}
RCT_EXPORT_METHOD
(
start
:
(
nonnull
NSNumber
*
)
reactTag
)
{
[
self
.
bridge
.
uiManager
addUIBlock
:
^
(
RCTUIManager
*
uiManager
,
NSDictionary
<
NSNumber
*
,
UIView
*>
*
viewRegistry
)
{
[
_rideManager
startGPSNavi
];
}];
}
INIT
(
AMapRideManager
)
NAVIGATION_VIEW
(
AMapRide
)
NAVIGATION_MANAGER
(
AMapRideManager
,
AMapNaviRideManager
)
-
(
UIView
*
)
view
{
return
_rideView
;
RCT_EXPORT_METHOD
(
calculateRoute
:
(
nonnull
NSNumber
*
)
reactTag
start
:
(
AMapNaviPoint
*
)
start
end
:
(
AMapNaviPoint
*
)
end
way
:
(
NSArray
<
AMapNaviPoint
*>
*
)
way
)
{
[
_navigationManager
calculateRideRouteWithStartPoint
:
start
endPoint
:
end
];
}
-
(
void
)
rideManagerOnCalculateRouteSuccess
:
(
AMapNaviRideManager
*
)
rideManager
{
if
(
_
ride
View
.
onCalculateRouteSuccess
)
{
_
ride
View
.
onCalculateRouteSuccess
(
nil
);
if
(
_
navigation
View
.
onCalculateRouteSuccess
)
{
_
navigation
View
.
onCalculateRouteSuccess
(
nil
);
}
}
-
(
void
)
rideManager
:
(
AMapNaviRideManager
*
)
rideManager
onCalculateRouteFailure
:
(
NSError
*
)
error
{
if
(
_
ride
View
.
onCalculateRouteFailure
)
{
_
ride
View
.
onCalculateRouteFailure
(@{
if
(
_
navigation
View
.
onCalculateRouteFailure
)
{
_
navigation
View
.
onCalculateRouteFailure
(@{
@"code"
:
@
(
error
.
code
),
});
}
}
+
(
AMapNaviRideManager
*
)
rideManager
{
static
AMapNaviRideManager
*
rideManager
;
if
(
rideManager
==
nil
)
{
rideManager
=
[
AMapNaviRideManager
new
];
[
rideManager
addDataRepresentative
:[
AMapRideManager
rideView
]];
}
return
rideManager
;
}
+
(
AMapRide
*
)
rideView
{
static
AMapRide
*
rideView
;
if
(
rideView
==
nil
)
{
rideView
=
[
AMapRide
new
];
}
return
rideView
;
}
@end
ios/AMapWalkManager.m
View file @
3a4d6937
#import <React/RCTUIManager.h>
#import <AMapNaviKit/AMapNaviWalkView.h>
#import <AMapNaviKit/AMapNaviWalkManager.h>
#import "AMapNavigationManager.h"
#import "AMapWalk.h"
#pragma ide diagnostic ignored "OCUnusedClassInspection"
@interface
AMapWalkManager
:
RCTViewManager
<
AMapNaviWalkManagerDelegate
>
+
(
AMapWalk
*
)
walk
View
;
+
(
AMapNaviWalkManager
*
)
walk
Manager
;
+
(
AMapWalk
*
)
navigation
View
;
+
(
AMapNaviWalkManager
*
)
navigation
Manager
;
@end
@implementation
AMapWalkManager
{
AMapWalk
*
_
walk
View
;
AMapNaviWalkManager
*
_
walk
Manager
;
AMapWalk
*
_
navigation
View
;
AMapNaviWalkManager
*
_
navigation
Manager
;
}
-
(
instancetype
)
init
{
if
(
self
=
[
super
init
])
{
_walkView
=
[
AMapWalkManager
walkView
];
_walkManager
=
[
AMapWalkManager
walkManager
];
_walkManager
.
delegate
=
self
;
}
return
self
;
}
RCT_EXPORT_MODULE
()
RCT_EXPORT_VIEW_PROPERTY
(
onCalculateRouteSuccess
,
RCTBubblingEventBlock
)
RCT_EXPORT_VIEW_PROPERTY
(
onCalculateRouteFailure
,
RCTBubblingEventBlock
)
RCT_EXPORT_METHOD
(
calculateRoute
:
(
nonnull
NSNumber
*
)
reactTag
start
:
(
AMapNaviPoint
*
)
start
end
:
(
AMapNaviPoint
*
)
end
)
{
[
self
.
bridge
.
uiManager
addUIBlock
:
^
(
RCTUIManager
*
uiManager
,
NSDictionary
<
NSNumber
*
,
UIView
*>
*
viewRegistry
)
{
[
_walkManager
calculateWalkRouteWithStartPoints
:@[
start
]
endPoints
:@[
end
]];
}];
}
RCT_EXPORT_METHOD
(
start
:
(
nonnull
NSNumber
*
)
reactTag
)
{
[
self
.
bridge
.
uiManager
addUIBlock
:
^
(
RCTUIManager
*
uiManager
,
NSDictionary
<
NSNumber
*
,
UIView
*>
*
viewRegistry
)
{
[
_walkManager
startGPSNavi
];
}];
}
INIT
(
AMapWalkManager
)
NAVIGATION_VIEW
(
AMapWalk
)
NAVIGATION_MANAGER
(
AMapWalkManager
,
AMapNaviWalkManager
)
-
(
UIView
*
)
view
{
return
_walkView
;
RCT_EXPORT_METHOD
(
calculateRoute
:
(
nonnull
NSNumber
*
)
reactTag
start
:
(
AMapNaviPoint
*
)
start
end
:
(
AMapNaviPoint
*
)
end
way
:
(
NSArray
<
AMapNaviPoint
*>
*
)
way
)
{
[
_navigationManager
calculateWalkRouteWithStartPoints
:@[
start
]
endPoints
:@[
end
]];
}
-
(
void
)
walkManagerOnCalculateRouteSuccess
:
(
AMapNaviWalkManager
*
)
walkManager
{
if
(
_
walk
View
.
onCalculateRouteSuccess
)
{
_
walk
View
.
onCalculateRouteSuccess
(
nil
);
if
(
_
navigation
View
.
onCalculateRouteSuccess
)
{
_
navigation
View
.
onCalculateRouteSuccess
(
nil
);
}
}
-
(
void
)
walkManager
:
(
AMapNaviWalkManager
*
)
walkManager
onCalculateRouteFailure
:
(
NSError
*
)
error
{
if
(
_
walk
View
.
onCalculateRouteFailure
)
{
_
walk
View
.
onCalculateRouteFailure
(@{
if
(
_
navigation
View
.
onCalculateRouteFailure
)
{
_
navigation
View
.
onCalculateRouteFailure
(@{
@"code"
:
@
(
error
.
code
),
});
}
}
+
(
AMapNaviWalkManager
*
)
walkManager
{
static
AMapNaviWalkManager
*
walkManager
;
if
(
walkManager
==
nil
)
{
walkManager
=
[
AMapNaviWalkManager
new
];
[
walkManager
addDataRepresentative
:[
AMapWalkManager
walkView
]];
}
return
walkManager
;
}
+
(
AMapWalk
*
)
walkView
{
static
AMapWalk
*
walkView
;
if
(
walkView
==
nil
)
{
walkView
=
[
AMapWalk
new
];
}
return
walkView
;
}
@end
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment