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

优化代码结构

parent d3de439b
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.bridge.NativeModule
import com.facebook.react.bridge.ReactApplicationContext
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.content.Context
import android.graphics.Color
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import com.amap.api.maps.model.LatLng
import com.facebook.react.bridge.ReadableMap
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.content.Context
import android.graphics.Color
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.content.Context
import android.graphics.Bitmap
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.view.View
import com.amap.api.maps.model.LatLng
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.content.Context
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.uimanager.ThemedReactContext
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.content.Context
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.uimanager.ThemedReactContext
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.content.Context
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.uimanager.ThemedReactContext
......@@ -29,7 +29,7 @@ internal class AMapPolylineManager : ViewGroupManager<AMapPolyline>() {
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) {
polyline.color = color
}
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.annotation.SuppressLint
import android.content.Context
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.maps
import android.view.View
import com.amap.api.maps.AMap
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
import android.annotation.SuppressLint
import com.amap.api.navi.enums.PathPlanningStrategy
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.uimanager.ThemedReactContext
......
@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.AMapNaviListener
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.bridge.ReadableArray
import com.facebook.react.common.MapBuilder
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
import android.annotation.SuppressLint
import com.facebook.react.bridge.ReadableArray
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
import com.facebook.react.uimanager.ThemedReactContext
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
import android.annotation.SuppressLint
import com.facebook.react.bridge.ReadableArray
......
package cn.qiuxiang.react.amap3d
package cn.qiuxiang.react.amap3d.navigation
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 {
requireNativeComponent,
ViewPropTypes,
PixelRatio,
Platform,
} from 'react-native'
import {LatLng} from './PropTypes'
import {PixelRatio, Platform, requireNativeComponent, ViewPropTypes} from 'react-native'
import {LatLng} from '../PropTypes'
export default class Circle extends PureComponent {
static propTypes = {
......
// @flow
import React, {PureComponent, PropTypes} from 'react'
import {
findNodeHandle,
requireNativeComponent,
UIManager,
ViewPropTypes,
} from 'react-native'
import {LatLng, Region} from './PropTypes'
import React, {PropTypes} from 'react'
import {requireNativeComponent, ViewPropTypes} from 'react-native'
import {LatLng, Region} from '../PropTypes'
import BaseComponent from '../BaseComponent'
type Target = {
zoomLevel?: number,
......@@ -15,7 +11,7 @@ type Target = {
rotation?: number,
}
export default class MapView extends PureComponent {
export default class MapView extends BaseComponent {
static propTypes = {
...ViewPropTypes,
......@@ -179,22 +175,11 @@ export default class MapView extends PureComponent {
this._sendCommand('animateTo', [target, duration])
}
/**
* call native method
*
* @private
*/
_sendCommand(command: string, params?: []) {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapView.Commands[command],
params,
)
}
render() {
return <AMapView {...this.props}/>
}
name = 'AMapView'
}
const AMapView = requireNativeComponent('AMapView', MapView)
import React, {PropTypes, PureComponent} from 'react'
import {
Platform,
requireNativeComponent,
StyleSheet,
View,
ViewPropTypes,
} from 'react-native'
import {LatLng} from './PropTypes'
import {Platform, requireNativeComponent, StyleSheet, View, ViewPropTypes} from 'react-native'
import Overlay from './Overlay'
import {LatLng} from '../PropTypes'
export default class Marker extends PureComponent {
static propTypes = {
......
import React, {PropTypes, PureComponent} from 'react'
import {
ViewPropTypes,
UIManager,
findNodeHandle,
requireNativeComponent,
} from 'react-native'
import React from 'react'
import {requireNativeComponent, ViewPropTypes} from 'react-native'
import BaseComponent from '../BaseComponent'
export default class Overlay extends PureComponent {
export default class Overlay extends BaseComponent {
static propTypes = {
...ViewPropTypes,
}
_update() {
setTimeout(() => {
UIManager.dispatchViewManagerCommand(
findNodeHandle(this),
UIManager.AMapOverlay.Commands.update,
null,
)
}, 0)
}
_update = () => setTimeout(() => this._sendCommand('update'), 0)
componentDidUpdate = this._update
componentDidMount = this._update
......@@ -27,6 +15,8 @@ export default class Overlay extends PureComponent {
render() {
return <AMapOverlay {...this.props}/>
}
name = 'AMapOverlay'
}
const AMapOverlay = requireNativeComponent('AMapOverlay', Overlay)
import React, {PropTypes, PureComponent} from 'react'
import {
requireNativeComponent,
ViewPropTypes,
PixelRatio,
Platform,
} from 'react-native'
import {LatLng} from './PropTypes'
import {PixelRatio, Platform, requireNativeComponent, ViewPropTypes} from 'react-native'
import {LatLng} from '../PropTypes'
export default class Polygon extends PureComponent {
static propTypes = {
......
import React, {PropTypes, PureComponent} from 'react'
import {
PixelRatio,
Platform,
processColor,
requireNativeComponent,
ViewPropTypes,
} from 'react-native'
import {LatLng} from './PropTypes'
import {PixelRatio, Platform, processColor, requireNativeComponent, ViewPropTypes} from 'react-native'
import {LatLng} from '../PropTypes'
export default class Polyline extends PureComponent {
static propTypes = {
......
// @flow
import React, {PropTypes, PureComponent} from 'react'
import {
ViewPropTypes,
UIManager,
requireNativeComponent,
findNodeHandle,
} from 'react-native'
import {LatLng} from './PropTypes'
import React, {PropTypes} from 'react'
import {ViewPropTypes} from 'react-native'
import BaseComponent from '../BaseComponent'
export default class Drive extends PureComponent {
export default class Base extends BaseComponent {
static propTypes = {
...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 {
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 {
</Touchable>
}
componentDidMount() {
this.props.navigation.navigate('Navigation')
}
render() {
return <ScrollView style={styles.scrollView} contentContainerStyle={styles.container}>
<StatusBar barStyle='dark-content' backgroundColor='#e0e0e0'/>
......
import React, {Component} from 'react'
import {StyleSheet} from 'react-native'
import {Drive} from 'react-native-amap3d'
import {Navigation} from 'react-native-amap3d'
export default class NavigationExample extends Component {
static navigationOptions = {
......@@ -29,7 +29,7 @@ export default class NavigationExample extends Component {
_start = () => this._navigation.start()
render() {
return <Drive
return <Navigation.Drive
ref={ref => this._navigation = ref}
style={StyleSheet.absoluteFill}
onCalculateRouteSuccess={this._start}
......
import MapView from './components/MapView'
import Marker from './components/Marker'
import Polyline from './components/Polyline'
import Polygon from './components/Polygon'
import Circle from './components/Circle'
import Drive from './components/Drive'
import Walk from './components/Walk'
import Ride from './components/Ride'
import MapView from './components/maps/MapView'
import Marker from './components/maps/Marker'
import Polyline from './components/maps/Polyline'
import Polygon from './components/maps/Polygon'
import Circle from './components/maps/Circle'
import Navigation from './components/navigation'
import MapUtils from './components/Utils'
MapView.Marker = Marker
......@@ -20,8 +18,6 @@ export {
Polyline,
Polygon,
Circle,
Drive,
Walk,
Ride,
Navigation,
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