Commit 6e68dff2 authored by 7c00's avatar 7c00

优化代码结构

parent d3de439b
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d
import cn.qiuxiang.react.amap3d.maps.*
import cn.qiuxiang.react.amap3d.navigation.AMapDriveManager
import cn.qiuxiang.react.amap3d.navigation.AMapRideManager
import cn.qiuxiang.react.amap3d.navigation.AMapWalkManager
import com.facebook.react.ReactPackage import com.facebook.react.ReactPackage
import com.facebook.react.bridge.NativeModule import com.facebook.react.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext import com.facebook.react.bridge.ReactApplicationContext
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.LatLng
import com.facebook.react.bridge.ReadableMap import com.facebook.react.bridge.ReadableMap
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.content.Context import android.content.Context
import android.graphics.Bitmap import android.graphics.Bitmap
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.view.View import android.view.View
import com.amap.api.maps.model.LatLng import com.amap.api.maps.model.LatLng
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.content.Context import android.content.Context
import com.facebook.react.views.view.ReactViewGroup import com.facebook.react.views.view.ReactViewGroup
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableArray
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableArray
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.content.Context import android.content.Context
import android.graphics.Color import android.graphics.Color
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableArray
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
...@@ -29,7 +29,7 @@ internal class AMapPolylineManager : ViewGroupManager<AMapPolyline>() { ...@@ -29,7 +29,7 @@ internal class AMapPolylineManager : ViewGroupManager<AMapPolyline>() {
polyline.setColors(colors) polyline.setColors(colors)
} }
@ReactProp(name = "color", customType = "Color") @ReactProp(name = "build/intermediates/exploded-aar/com.android.support/appcompat-v7/23.0.1/res/color", customType = "Color")
fun setColor(polyline: AMapPolyline, color: Int) { fun setColor(polyline: AMapPolyline, color: Int) {
polyline.color = color polyline.color = color
} }
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.annotation.SuppressLint import android.annotation.SuppressLint
import android.content.Context import android.content.Context
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.maps
import android.view.View import android.view.View
import com.amap.api.maps.AMap import com.amap.api.maps.AMap
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import android.annotation.SuppressLint import android.annotation.SuppressLint
import com.amap.api.navi.enums.PathPlanningStrategy import com.amap.api.navi.enums.PathPlanningStrategy
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
......
@file:Suppress("OverridingDeprecatedMember", "DEPRECATION", "LeakingThis") @file:Suppress("OverridingDeprecatedMember", "DEPRECATION", "LeakingThis")
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import com.amap.api.navi.AMapNavi import com.amap.api.navi.AMapNavi
import com.amap.api.navi.AMapNaviListener import com.amap.api.navi.AMapNaviListener
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableArray
import com.facebook.react.common.MapBuilder import com.facebook.react.common.MapBuilder
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import android.annotation.SuppressLint import android.annotation.SuppressLint
import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableArray
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import android.annotation.SuppressLint import android.annotation.SuppressLint
import com.facebook.react.bridge.ReadableArray import com.facebook.react.bridge.ReadableArray
......
package cn.qiuxiang.react.amap3d package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.uimanager.ThemedReactContext import com.facebook.react.uimanager.ThemedReactContext
......
/**
* 基础组件,包含一些公共方法
*
* @flow
*/
import React, {PureComponent} from 'react'
import {findNodeHandle, UIManager} from 'react-native'
export default class BaseComponent extends PureComponent {
/**
* 调用原生方法
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager[this.name].Commands[command],
params,
)
}
}
// @flow
import React, {PropTypes, PureComponent} from 'react'
import {
ViewPropTypes,
UIManager,
requireNativeComponent,
findNodeHandle,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Navigation extends PureComponent {
static propTypes = {
...ViewPropTypes,
/**
* 路径规划成功事件
*/
onCalculateRouteSuccess: React.PropTypes.func,
/**
* 路径规划失败事件
*/
onCalculateRouteFailure: React.PropTypes.func,
}
/**
* 步行路线规划
*/
calculateWalkRoute(start, end) {
this._sendCommand('calculateWalkRoute', [start, end])
}
/**
* 骑行路线规划
*/
calculateRideRoute(start, end) {
this._sendCommand('calculateRideRoute', [start, end])
}
/**
* 驾车路线规划
*/
calculateDriveRoute(start, end) {
this._sendCommand('calculateDriveRoute', [start, end])
}
/**
* 开始导航
*/
start() {
this._sendCommand('start')
}
/**
* call native method
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapNavigation.Commands[command],
params,
)
}
render() {
return <AMapNavigation {...this.props}/>
}
}
const AMapNavigation = requireNativeComponent('AMapNavigation', Navigation)
// @flow
import React, {PropTypes, PureComponent} from 'react'
import {
ViewPropTypes,
UIManager,
requireNativeComponent,
findNodeHandle,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Ride extends PureComponent {
static propTypes = {
...ViewPropTypes,
/**
* 路径规划成功事件
*/
onCalculateRouteSuccess: React.PropTypes.func,
/**
* 路径规划失败事件
*/
onCalculateRouteFailure: React.PropTypes.func,
}
/**
* 路线规划
*/
calculateRoute(start, end) {
this._sendCommand('calculateRoute', [start, end])
}
/**
* 开始导航
*/
start() {
this._sendCommand('start')
}
/**
* call native method
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapRide.Commands[command],
params,
)
}
render() {
return <AMapRide {...this.props}/>
}
}
const AMapRide = requireNativeComponent('AMapRide', Ride)
// @flow
import React, {PropTypes, PureComponent} from 'react'
import {
ViewPropTypes,
UIManager,
requireNativeComponent,
findNodeHandle,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Walk extends PureComponent {
static propTypes = {
...ViewPropTypes,
/**
* 路径规划成功事件
*/
onCalculateRouteSuccess: React.PropTypes.func,
/**
* 路径规划失败事件
*/
onCalculateRouteFailure: React.PropTypes.func,
}
/**
* 路线规划
*/
calculateRoute(start, end) {
this._sendCommand('calculateRoute', [start, end])
}
/**
* 开始导航
*/
start() {
this._sendCommand('start')
}
/**
* call native method
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapWalk.Commands[command],
params,
)
}
render() {
return <AMapWalk {...this.props}/>
}
}
const AMapWalk = requireNativeComponent('AMapWalk', Walk)
import React, {PropTypes, PureComponent} from 'react' import React, {PropTypes, PureComponent} from 'react'
import { import {PixelRatio, Platform, requireNativeComponent, ViewPropTypes} from 'react-native'
requireNativeComponent, import {LatLng} from '../PropTypes'
ViewPropTypes,
PixelRatio,
Platform,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Circle extends PureComponent { export default class Circle extends PureComponent {
static propTypes = { static propTypes = {
......
// @flow // @flow
import React, {PureComponent, PropTypes} from 'react' import React, {PropTypes} from 'react'
import { import {requireNativeComponent, ViewPropTypes} from 'react-native'
findNodeHandle, import {LatLng, Region} from '../PropTypes'
requireNativeComponent, import BaseComponent from '../BaseComponent'
UIManager,
ViewPropTypes,
} from 'react-native'
import {LatLng, Region} from './PropTypes'
type Target = { type Target = {
zoomLevel?: number, zoomLevel?: number,
...@@ -15,7 +11,7 @@ type Target = { ...@@ -15,7 +11,7 @@ type Target = {
rotation?: number, rotation?: number,
} }
export default class MapView extends PureComponent { export default class MapView extends BaseComponent {
static propTypes = { static propTypes = {
...ViewPropTypes, ...ViewPropTypes,
...@@ -179,22 +175,11 @@ export default class MapView extends PureComponent { ...@@ -179,22 +175,11 @@ export default class MapView extends PureComponent {
this._sendCommand('animateTo', [target, duration]) this._sendCommand('animateTo', [target, duration])
} }
/**
* call native method
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapView.Commands[command],
params,
)
}
render() { render() {
return <AMapView {...this.props}/> return <AMapView {...this.props}/>
} }
name = 'AMapView'
} }
const AMapView = requireNativeComponent('AMapView', MapView) const AMapView = requireNativeComponent('AMapView', MapView)
import React, {PropTypes, PureComponent} from 'react' import React, {PropTypes, PureComponent} from 'react'
import { import {Platform, requireNativeComponent, StyleSheet, View, ViewPropTypes} from 'react-native'
Platform,
requireNativeComponent,
StyleSheet,
View,
ViewPropTypes,
} from 'react-native'
import {LatLng} from './PropTypes'
import Overlay from './Overlay' import Overlay from './Overlay'
import {LatLng} from '../PropTypes'
export default class Marker extends PureComponent { export default class Marker extends PureComponent {
static propTypes = { static propTypes = {
......
import React, {PropTypes, PureComponent} from 'react' import React from 'react'
import { import {requireNativeComponent, ViewPropTypes} from 'react-native'
ViewPropTypes, import BaseComponent from '../BaseComponent'
UIManager,
findNodeHandle,
requireNativeComponent,
} from 'react-native'
export default class Overlay extends PureComponent { export default class Overlay extends BaseComponent {
static propTypes = { static propTypes = {
...ViewPropTypes, ...ViewPropTypes,
} }
_update() { _update = () => setTimeout(() => this._sendCommand('update'), 0)
setTimeout(() => {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapOverlay.Commands.update,
null,
)
}, 0)
}
componentDidUpdate = this._update componentDidUpdate = this._update
componentDidMount = this._update componentDidMount = this._update
...@@ -27,6 +15,8 @@ export default class Overlay extends PureComponent { ...@@ -27,6 +15,8 @@ export default class Overlay extends PureComponent {
render() { render() {
return <AMapOverlay {...this.props}/> return <AMapOverlay {...this.props}/>
} }
name = 'AMapOverlay'
} }
const AMapOverlay = requireNativeComponent('AMapOverlay', Overlay) const AMapOverlay = requireNativeComponent('AMapOverlay', Overlay)
import React, {PropTypes, PureComponent} from 'react' import React, {PropTypes, PureComponent} from 'react'
import { import {PixelRatio, Platform, requireNativeComponent, ViewPropTypes} from 'react-native'
requireNativeComponent, import {LatLng} from '../PropTypes'
ViewPropTypes,
PixelRatio,
Platform,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Polygon extends PureComponent { export default class Polygon extends PureComponent {
static propTypes = { static propTypes = {
......
import React, {PropTypes, PureComponent} from 'react' import React, {PropTypes, PureComponent} from 'react'
import { import {PixelRatio, Platform, processColor, requireNativeComponent, ViewPropTypes} from 'react-native'
PixelRatio, import {LatLng} from '../PropTypes'
Platform,
processColor,
requireNativeComponent,
ViewPropTypes,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Polyline extends PureComponent { export default class Polyline extends PureComponent {
static propTypes = { static propTypes = {
......
// @flow // @flow
import React, {PropTypes, PureComponent} from 'react' import React, {PropTypes} from 'react'
import { import {ViewPropTypes} from 'react-native'
ViewPropTypes, import BaseComponent from '../BaseComponent'
UIManager,
requireNativeComponent,
findNodeHandle,
} from 'react-native'
import {LatLng} from './PropTypes'
export default class Drive extends PureComponent { export default class Base extends BaseComponent {
static propTypes = { static propTypes = {
...ViewPropTypes, ...ViewPropTypes,
/** /**
* 路径规划成功事件 * 路径规划成功事件
*/ */
onCalculateRouteSuccess: React.PropTypes.func, onCalculateRouteSuccess: PropTypes.func,
/** /**
* 路径规划失败事件 * 路径规划失败事件
*/ */
onCalculateRouteFailure: React.PropTypes.func, onCalculateRouteFailure: PropTypes.func,
} }
/** /**
...@@ -36,23 +31,4 @@ export default class Drive extends PureComponent { ...@@ -36,23 +31,4 @@ export default class Drive extends PureComponent {
start() { start() {
this._sendCommand('start') this._sendCommand('start')
} }
/**
* call native method
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapDrive.Commands[command],
params,
)
}
render() {
return <AMapDrive {...this.props}/>
}
} }
const AMapDrive = requireNativeComponent('AMapDrive', Drive)
// @flow
import React from 'react'
import {requireNativeComponent} from 'react-native'
import Base from './Base'
export default class Drive extends Base {
render() {
return <AMapDrive {...this.props}/>
}
name = 'AMapDrive'
}
const AMapDrive = requireNativeComponent('AMapDrive', Drive)
// @flow
import React from 'react'
import {requireNativeComponent} from 'react-native'
import Base from './Base'
export default class Ride extends Base {
render() {
return <AMapRide {...this.props}/>
}
name = 'AMapRide'
}
const AMapRide = requireNativeComponent('AMapRide', Ride)
// @flow
import React from 'react'
import {requireNativeComponent} from 'react-native'
import Base from './Base'
export default class Walk extends Base {
render() {
return <AMapWalk {...this.props}/>
}
name = 'AMapWalk'
}
const AMapWalk = requireNativeComponent('AMapWalk', Walk)
import Drive from './Drive'
import Ride from './Ride'
import Walk from './Walk'
export default {Drive, Ride, Walk}
...@@ -28,10 +28,6 @@ export default class Examples extends Component { ...@@ -28,10 +28,6 @@ export default class Examples extends Component {
</Touchable> </Touchable>
} }
componentDidMount() {
this.props.navigation.navigate('Navigation')
}
render() { render() {
return <ScrollView style={styles.scrollView} contentContainerStyle={styles.container}> return <ScrollView style={styles.scrollView} contentContainerStyle={styles.container}>
<StatusBar barStyle='dark-content' backgroundColor='#e0e0e0'/> <StatusBar barStyle='dark-content' backgroundColor='#e0e0e0'/>
......
import React, {Component} from 'react' import React, {Component} from 'react'
import {StyleSheet} from 'react-native' import {StyleSheet} from 'react-native'
import {Drive} from 'react-native-amap3d' import {Navigation} from 'react-native-amap3d'
export default class NavigationExample extends Component { export default class NavigationExample extends Component {
static navigationOptions = { static navigationOptions = {
...@@ -29,7 +29,7 @@ export default class NavigationExample extends Component { ...@@ -29,7 +29,7 @@ export default class NavigationExample extends Component {
_start = () => this._navigation.start() _start = () => this._navigation.start()
render() { render() {
return <Drive return <Navigation.Drive
ref={ref => this._navigation = ref} ref={ref => this._navigation = ref}
style={StyleSheet.absoluteFill} style={StyleSheet.absoluteFill}
onCalculateRouteSuccess={this._start} onCalculateRouteSuccess={this._start}
......
import MapView from './components/MapView' import MapView from './components/maps/MapView'
import Marker from './components/Marker' import Marker from './components/maps/Marker'
import Polyline from './components/Polyline' import Polyline from './components/maps/Polyline'
import Polygon from './components/Polygon' import Polygon from './components/maps/Polygon'
import Circle from './components/Circle' import Circle from './components/maps/Circle'
import Drive from './components/Drive' import Navigation from './components/navigation'
import Walk from './components/Walk'
import Ride from './components/Ride'
import MapUtils from './components/Utils' import MapUtils from './components/Utils'
MapView.Marker = Marker MapView.Marker = Marker
...@@ -20,8 +18,6 @@ export { ...@@ -20,8 +18,6 @@ export {
Polyline, Polyline,
Polygon, Polygon,
Circle, Circle,
Drive, Navigation,
Walk,
Ride,
MapUtils, MapUtils,
} }
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