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
ab216237
Commit
ab216237
authored
Aug 21, 2017
by
7c00
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
简单实现导航功能
parent
32cc0fb6
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
285 additions
and
6 deletions
+285
-6
build.gradle
android/build.gradle
+1
-1
AndroidManifest.xml
android/src/main/AndroidManifest.xml
+2
-0
AMap3DPackage.kt
...d/src/main/java/cn/qiuxiang/react/amap3d/AMap3DPackage.kt
+2
-1
AMapNavigation.kt
.../src/main/java/cn/qiuxiang/react/amap3d/AMapNavigation.kt
+186
-0
AMapNavigationManager.kt
...in/java/cn/qiuxiang/react/amap3d/AMapNavigationManager.kt
+53
-0
app.js
example/src/app.js
+2
-0
examples.js
example/src/examples.js
+6
-4
navigation.js
example/src/examples/navigation.js
+33
-0
No files found.
android/build.gradle
View file @
ab216237
...
...
@@ -26,6 +26,6 @@ android {
dependencies
{
provided
'com.facebook.react:react-native:+'
compile
'com.amap.api:
3dmap:5.2.1
'
compile
'com.amap.api:
navi-3dmap:5.3.0_3dmap5.3.0
'
compile
"org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
}
android/src/main/AndroidManifest.xml
View file @
ab216237
...
...
@@ -8,5 +8,7 @@
<uses-permission
android:name=
"android.permission.CHANGE_WIFI_STATE"
/>
<uses-permission
android:name=
"android.permission.READ_PHONE_STATE"
/>
<uses-permission
android:name=
"android.permission.ACCESS_COARSE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.ACCESS_FINE_LOCATION"
/>
<uses-permission
android:name=
"android.permission.WAKE_LOCK"
/>
</manifest>
android/src/main/java/cn/qiuxiang/react/amap3d/AMap3DPackage.kt
View file @
ab216237
...
...
@@ -17,6 +17,7 @@ class AMap3DPackage : ReactPackage {
AMapOverlayManager
(),
AMapPolylineManager
(),
AMapPolygonManager
(),
AMapCircleManager
())
AMapCircleManager
(),
AMapNavigationManager
())
}
}
android/src/main/java/cn/qiuxiang/react/amap3d/AMapNavigation.kt
0 → 100644
View file @
ab216237
package
cn.qiuxiang.react.amap3d
import
android.annotation.SuppressLint
import
com.amap.api.navi.AMapNavi
import
com.amap.api.navi.AMapNaviListener
import
com.amap.api.navi.AMapNaviView
import
com.amap.api.navi.AMapNaviViewListener
import
com.amap.api.navi.enums.NaviType
import
com.amap.api.navi.enums.PathPlanningStrategy
import
com.amap.api.navi.model.*
import
com.autonavi.tbt.TrafficFacilityInfo
import
com.facebook.react.bridge.Arguments
import
com.facebook.react.bridge.ReadableArray
import
com.facebook.react.bridge.ReadableMap
import
com.facebook.react.bridge.WritableMap
import
com.facebook.react.uimanager.ThemedReactContext
import
com.facebook.react.uimanager.events.RCTEventEmitter
@SuppressLint
(
"ViewConstructor"
)
class
AMapNavigation
(
context
:
ThemedReactContext
)
:
AMapNaviView
(
context
.
currentActivity
),
AMapNaviViewListener
,
AMapNaviListener
{
val
eventEmitter
:
RCTEventEmitter
=
context
.
getJSModule
(
RCTEventEmitter
::
class
.
java
)
val
navigation
=
AMapNavi
.
getInstance
(
context
)
!!
init
{
super
.
onCreate
(
null
)
this
.
setAMapNaviViewListener
(
this
)
navigation
.
addAMapNaviListener
(
this
)
}
fun
calculateWalkRoute
(
args
:
ReadableArray
?)
{
navigation
.
calculateWalkRoute
(
latLngFromReadableMap
(
args
?.
getMap
(
0
)
!!
),
latLngFromReadableMap
(
args
.
getMap
(
1
)))
}
fun
calculateRideRoute
(
args
:
ReadableArray
?)
{
navigation
.
calculateRideRoute
(
latLngFromReadableMap
(
args
?.
getMap
(
0
)
!!
),
latLngFromReadableMap
(
args
.
getMap
(
1
)))
}
fun
calculateDriveRoute
(
args
:
ReadableArray
?)
{
navigation
.
calculateDriveRoute
(
listOf
(
latLngFromReadableMap
(
args
?.
getMap
(
0
)
!!
)),
listOf
(
latLngFromReadableMap
(
args
.
getMap
(
1
))),
listOf
(),
PathPlanningStrategy
.
DRIVING_DEFAULT
)
}
fun
start
()
{
navigation
.
startNavi
(
NaviType
.
GPS
)
}
fun
latLngFromReadableMap
(
map
:
ReadableMap
):
NaviLatLng
{
return
NaviLatLng
(
map
.
getDouble
(
"latitude"
),
map
.
getDouble
(
"longitude"
))
}
fun
sendEvent
(
name
:
String
,
data
:
WritableMap
=
Arguments
.
createMap
())
{
eventEmitter
.
receiveEvent
(
id
,
name
,
data
)
}
override
fun
onCalculateRouteSuccess
(
array
:
IntArray
)
{
sendEvent
(
"onCalculateRouteSuccess"
)
}
override
fun
onCalculateRouteFailure
(
errorCode
:
Int
)
{
val
event
=
Arguments
.
createMap
()
event
.
putInt
(
"errorCode"
,
errorCode
)
sendEvent
(
"onCalculateRouteFailure"
,
event
)
}
override
fun
onInitNaviSuccess
()
{
sendEvent
(
"onReady"
)
}
override
fun
onServiceAreaUpdate
(
p0
:
Array
<
out
AMapServiceAreaInfo
>?)
{
}
override
fun
onEndEmulatorNavi
()
{
}
override
fun
onArrivedWayPoint
(
p0
:
Int
)
{
}
override
fun
onArriveDestination
()
{
}
override
fun
onPlayRing
(
p0
:
Int
)
{
}
override
fun
onTrafficStatusUpdate
()
{
}
override
fun
onGpsOpenStatus
(
p0
:
Boolean
)
{
}
override
fun
updateAimlessModeCongestionInfo
(
p0
:
AimLessModeCongestionInfo
?)
{
}
override
fun
showCross
(
p0
:
AMapNaviCross
?)
{
}
override
fun
onGetNavigationText
(
p0
:
Int
,
p1
:
String
?)
{
}
override
fun
onGetNavigationText
(
p0
:
String
?)
{
}
override
fun
updateAimlessModeStatistics
(
p0
:
AimLessModeStat
?)
{
}
override
fun
hideCross
()
{
}
override
fun
onInitNaviFailure
()
{
}
override
fun
onReCalculateRouteForTrafficJam
()
{
}
override
fun
hideLaneInfo
()
{
}
override
fun
onNaviInfoUpdated
(
p0
:
AMapNaviInfo
?)
{
}
override
fun
updateCameraInfo
(
p0
:
Array
<
out
AMapNaviCameraInfo
>?)
{
}
override
fun
onLocationChange
(
p0
:
AMapNaviLocation
?)
{
}
override
fun
onReCalculateRouteForYaw
()
{
}
override
fun
onStartNavi
(
p0
:
Int
)
{
}
override
fun
notifyParallelRoad
(
p0
:
Int
)
{
}
override
fun
OnUpdateTrafficFacility
(
p0
:
AMapNaviTrafficFacilityInfo
?)
{
}
override
fun
OnUpdateTrafficFacility
(
p0
:
Array
<
out
AMapNaviTrafficFacilityInfo
>?)
{
}
override
fun
OnUpdateTrafficFacility
(
p0
:
TrafficFacilityInfo
?)
{
}
override
fun
showLaneInfo
(
p0
:
Array
<
out
AMapLaneInfo
>?,
p1
:
ByteArray
?,
p2
:
ByteArray
?)
{
}
override
fun
onNaviInfoUpdate
(
p0
:
NaviInfo
?)
{
}
override
fun
onNaviTurnClick
()
{
}
override
fun
onNaviViewLoaded
()
{
}
override
fun
onNaviBackClick
():
Boolean
{
return
false
}
override
fun
onNaviMapMode
(
p0
:
Int
)
{
}
override
fun
onNextRoadClick
()
{
}
override
fun
onScanViewButtonClick
()
{
}
override
fun
onLockMap
(
p0
:
Boolean
)
{
}
override
fun
onNaviSetting
()
{
}
override
fun
onNaviCancel
()
{
}
}
android/src/main/java/cn/qiuxiang/react/amap3d/AMapNavigationManager.kt
0 → 100644
View file @
ab216237
package
cn.qiuxiang.react.amap3d
import
com.facebook.react.bridge.ReadableArray
import
com.facebook.react.uimanager.ThemedReactContext
import
com.facebook.react.uimanager.ViewGroupManager
class
AMapNavigationManager
:
ViewGroupManager
<
AMapNavigation
>()
{
override
fun
getName
():
String
{
return
"AMapNavigation"
}
override
fun
createViewInstance
(
reactContext
:
ThemedReactContext
):
AMapNavigation
{
return
AMapNavigation
(
reactContext
)
}
override
fun
onDropViewInstance
(
view
:
AMapNavigation
)
{
super
.
onDropViewInstance
(
view
)
view
.
onDestroy
()
}
companion
object
{
val
START
=
1
val
CALCULATE_WALK_ROUTE
=
2
val
CALCULATE_RIDE_ROUTE
=
3
val
CALCULATE_DRIVE_ROUTE
=
4
}
override
fun
getCommandsMap
():
Map
<
String
,
Int
>
{
return
mapOf
(
"start"
to
START
,
"calculateWalkRoute"
to
CALCULATE_WALK_ROUTE
,
"calculateRideRoute"
to
CALCULATE_RIDE_ROUTE
,
"calculateDriveRoute"
to
CALCULATE_DRIVE_ROUTE
)
}
override
fun
receiveCommand
(
view
:
AMapNavigation
,
commandId
:
Int
,
args
:
ReadableArray
?)
{
when
(
commandId
)
{
START
->
view
.
start
()
CALCULATE_WALK_ROUTE
->
view
.
calculateWalkRoute
(
args
)
CALCULATE_RIDE_ROUTE
->
view
.
calculateRideRoute
(
args
)
CALCULATE_DRIVE_ROUTE
->
view
.
calculateDriveRoute
(
args
)
}
}
override
fun
getExportedCustomDirectEventTypeConstants
():
Map
<
String
,
Any
>
{
return
mapOf
(
"onReady"
to
mapOf
(
"registrationName"
to
"onReady"
),
"onCalculateRouteSuccess"
to
mapOf
(
"registrationName"
to
"onCalculateRouteSuccess"
),
"onCalculateRouteFailure"
to
mapOf
(
"registrationName"
to
"onCalculateRouteFailure"
)
)
}
}
example/src/app.js
View file @
ab216237
...
...
@@ -12,6 +12,7 @@ import Polyline from './examples/polyline'
import
Polygon
from
'./examples/polygon'
import
Circle
from
'./examples/circle'
import
Events
from
'./examples/events'
import
Navigation
from
'./examples/navigation'
export
default
StackNavigator
({
Examples
:
{
screen
:
Examples
},
...
...
@@ -26,6 +27,7 @@ export default StackNavigator({
Polygon
:
{
screen
:
Polygon
},
Circle
:
{
screen
:
Circle
},
Events
:
{
screen
:
Events
},
Navigation
:
{
screen
:
Navigation
},
},
{
navigationOptions
:
{
headerTintColor
:
'#212121'
,
...
...
example/src/examples.js
View file @
ab216237
import
React
,
{
Component
}
from
'react'
import
{
View
,
Text
,
Platform
,
ScrollView
,
StatusBar
,
StyleSheet
,
Text
,
TouchableHighlight
,
TouchableNativeFeedback
,
Platform
,
StatusBar
,
View
,
}
from
'react-native'
let
Touchable
=
TouchableHighlight
...
...
@@ -45,6 +45,8 @@ export default class Examples extends Component {
{
this
.
_renderItem
(
'动画移动'
,
'Animated'
)}
<
View
style
=
{
styles
.
separator
}
/
>
{
this
.
_renderItem
(
'地图事件'
,
'Events'
)}
<
View
style
=
{
styles
.
separator
}
/
>
{
this
.
_renderItem
(
'导航'
,
'Navigation'
)}
<
/View
>
<
View
style
=
{
styles
.
group
}
>
{
this
.
_renderItem
(
'添加标记'
,
'Marker'
)}
...
...
example/src/examples/navigation.js
0 → 100644
View file @
ab216237
import
React
,
{
Component
}
from
'react'
import
{
StyleSheet
}
from
'react-native'
import
{
Navigation
}
from
'react-native-amap3d'
export
default
class
NavigationExample
extends
Component
{
static
navigationOptions
=
{
title
:
'导航'
,
}
_ready
=
()
=>
{
this
.
_navigation
.
calculateDriveRoute
(
{
latitude
:
39.906901
,
longitude
:
116.397972
,
},
{
latitude
:
39.806901
,
longitude
:
116.397972
,
}
)
}
_start
=
()
=>
this
.
_navigation
.
start
()
render
()
{
return
<
Navigation
ref
=
{
ref
=>
this
.
_navigation
=
ref
}
style
=
{
StyleSheet
.
absoluteFill
}
onReady
=
{
this
.
_ready
}
onCalculateRouteSuccess
=
{
this
.
_start
}
/
>
}
}
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