Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Mapas e Rotas com React Native - #7 Preço da Viagem

25/02/2021

Nesse tutorial faremos a precificação da corrida, calculando a distância do usuário até o destino da viagem.

App com Valor da Viagem

App.js

No nosso entry point App.js vamos criar o estado price e vamos seta-lo assim que o usuário colocar o trajeto final:

import { Text, View, TouchableOpacity } from 'react-native';
import { MaterialIcons } from '@expo/vector-icons';

//Dentro da function
const [price,setPrice]=useState(null);

//Dentro do return
<MapViewDirections
origin={origin}
destination={destination}
apikey={config.googleApi}
strokeWidth={3}
onReady={result=>{
    setDistance(result.distance);
    setPrice(result.distance*3);
    mapEl.current.fitToCoordinates(
        result.coordinates,{
            edgePadding:{
                top:50,
                bottom:50,
                left:50,
                right:50
            }
        }
    );
}
}
/>

<GooglePlacesAutocomplete
    placeholder='Para onde vamos?'
    onPress={(data, details = null) => {
        setDestination({
            latitude: details.geometry.location.lat,
            longitude: details.geometry.location.lng,
            latitudeDelta: 0.000922,
            longitudeDelta: 0.000421
        });
    }}
    query={{
        key: config.googleApi,
        language: 'pt-br',
    }}
    enablePoweredByContainer={false}
    fetchDetails={true}
    styles={{
        listView:{backgroundColor:'#fff', zIndex:10},
        container:{position:'absolute',width:'100%'}
    }}
/>

{distance &&
    <View style={css.distance}>
        <Text style={css.distance__text}>Distância: {distance.toFixed(2).replace('.',',')}km</Text>
        <TouchableOpacity style={css.price}>
            <Text style={css.price__text}><MaterialIcons name="payment" size={24} color="white" /> Pagar R${price.toFixed(2).replace('.',',')}</Text>
        </TouchableOpacity>
    </View>
}

assets/css/Css.js

Vamos estilizar as características do nosso botão de pagar:

distance:{
    flex:1,
    justifyContent: 'center',
    alignItems:'center',
    padding: 10
},
distance__text:{
    fontSize:20,
    fontWeight:'bold'
},
price:{
    backgroundColor: '#000',
    padding: 7,
    borderRadius:4,
    marginTop:30,
    justifyContent:'center',
    alignItems: 'center'
},
price__text:{
    color:'#fff',
    fontWeight: 'bold',
    fontSize: 20
}

Por hoje é só turma. Sucesso nos códigos e na vida!

Precisando de assessoria? webdesignemfoco@gmail.com

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Mapas e Rotas com React Native - #6 Trajetos no Mapa
Neste tutorial trabalharemos com o trajeto escolhido pelo usuário, utilizando para isso o módulo MapViewDirections do React Native.
Saiba mais!
Mapas e Rotas com React Native - #8 Organização em Screens
Nesse tutorial trabalharemos com as telas (screens) personalizadas do nosso app construido com React Native, organizando o projeto.
Saiba mais!
React JS
Nessa seção aprenderemos sobre essa importante biblioteca Javascript desenvolvida pelo Facebook para facilitar a construção backend dos nossos websites.
Saiba mais!