import React,{PureComponent} from 'react'; import MapView,{Marker,MarkerAnimated} from "react-native-maps" import PropTypes from 'prop-types'; import { StyleSheet, View, Image, Text, } from 'react-native'; const theme=require("../../utils/theme"); import {responsiveHeight, responsiveWidth} from "react-native-responsive-dimensions"; import IMarker from "./IMarker"; import I18n from "react-native-i18n"; import MapViewDirections from 'react-native-maps-directions'; const API_KEY="AIzaSyAYOEp-Pckvc3TwOIulCICokKgmp14rGHI"; const mnetwork=require('./../../datas/img/png/home_network.png'); const othernetwork=require('./../../datas/img/png/other_net.png'); import { copilot, CopilotStep } from 'react-native-copilot'; class IMap extends PureComponent { static propTypes = { markers: PropTypes.array, map:PropTypes.object, network:PropTypes.object, myNetwork:PropTypes.object, selectedMarker:PropTypes.object, myPosition:PropTypes.object, onMarkerClick:PropTypes.func, initialRegion:PropTypes.object, typeMap:PropTypes.string, needRoad:PropTypes.bool, isNeedUserFocus:PropTypes.bool, onNeedRoadReady:PropTypes.func, onNeedRoadError:PropTypes.func, onMapReady:PropTypes.func }; static defaultProps = { isNeedUserFocus:false }; constructor(props){ super(props) this.state={ markers:[], roadReady:false, isNeedUserFocus:false, } } mapRef = (ref) => { this.mapview = ref } getMapRef = () => this.mapview componentWillReceiveProps(nextProps: Readonly

, nextContext: any): void { const markers=this.state.markers const newmarkers=nextProps.markers if(markers.length<=0) this.setState({markers:newmarkers}) else if(markers.length!==newmarkers){ this.setState({markers:newmarkers}) } this.setState({isNeedUserFocus:nextProps.isNeedUserFocus}) } render(){ const {markers,initialRegion,myPosition,myNetwork,typeMap,selectedMarker}=this.props if(initialRegion!==null && myNetwork!==null) return ( this.mapview = re} onMapReady={this.props.onMapReady} onRegionChangeComplete={(re)=>{this.onRegionChangeOver(re)}}> {this.state.markers.map((item,index)=>{ return ( this.props.onMarkerClick(e,marker)} network={myNetwork} />) })} {this.renderMyPosition()} {this.makeDirection()} ) else return() } focusToUser(){ this.setState({isNeedUserFocus:true}) } closeUserFocus(){ this.setState({isNeedUserFocus:false}) } onRegionChangeOver(region){ } makeDirection() { let {myPosition, selectedMarker,needRoad} = this.props if (myPosition !== null && selectedMarker !== null && selectedMarker !== undefined && myPosition !== undefined && needRoad) { setTimeout(()=>{ if(!this.state.roadReady){ this.setState({roadReady:true}) this.props.onNeedRoadError()} },10000) return ({ this.setState({roadReady:true}) this.props.onNeedRoadReady(data)} } onError={()=>{ this.setState({roadReady:true}) this.props.onNeedRoadError()} } strokeColor={theme.primary} />) } } renderMyPosition() { const {myPosition,myNetwork}=this.props if(myPosition!=null){ if(false){ return ( ) }else return () } } } export default IMap; const styles = StyleSheet.create({ container: { flex: 1, backgroundColor: '#FFF', }, myClusterTextStyle:{ color:"white" }, myClusterStyle: { backgroundColor:theme.accent, height:32, justifyContent:'center', alignItems:'center', width:32, borderRadius:16 }, rowContainer: { height: 52, flex: 1, flexDirection: 'row', justifyContent: 'flex-start', alignItems: 'center', }, iconContainer: { marginRight: 16, }, mapmarker:{ width:52, height:52, }, slidingup:{ backgroundColor:"transparent", position:"absolute", height:300, bottom:0, right:35, zIndex: 1 }, panel: { flex: 1, backgroundColor: 'white', position: 'relative' }, panelHeader: { height: 120, backgroundColor: '#b197fc', alignItems: 'center', justifyContent: 'center' }, favoriteIcon: { left: responsiveWidth(75), backgroundColor: theme.primary, width: 64, justifyContent:'center', alignContent: 'center', bottom:-64, position:'absolute', height: 64, padding: 8, zIndex:1, borderRadius: 32, }, hambuger:{ }, topBar:{ position:'absolute', alignSelf: 'center', justifyContent:'center', alignItems: 'center', marginTop:responsiveHeight(4), width:responsiveWidth(95), }, searchInput:{ width:responsiveWidth(70), fontSize:14 }, search: { width:responsiveWidth(70), height:responsiveHeight(10), backgroundColor:'#00000000', }, map:{ width:responsiveWidth(100), height:responsiveHeight(100), }, backgroundd_drawer:{ backgroundColor:'#000', }, cardsearch:{ width:responsiveWidth(90), height:responsiveHeight(10), position:'absolute', alignSelf: 'center', marginTop: 5, }, actionButtonIcon: { fontSize: 20, height: 22, color: 'white', }, welcome: { fontSize: 20, textAlign: 'center', margin: 10, }, instructions: { textAlign: 'center', color: '#333333', marginBottom: 5, }, });