티스토리 뷰
GPS좌표들을 선으로 그려주는 방법이다.
전역 {arr}로 위도,경도를 갖고 있는 배열을 받는다.
* 이 부분은 서버에서 받아오는 데이터로 변경하거나.. 로컬디비에 저장해서 쓰는 방법으로 변경해야 한다.
그 배열들을 {dataSettings}라는 함수에서 시작좌표,끝좌표를 갖는 데이터로 변경한다.
이유는 polyline을 그리기 위해선 시작좌표 끝좌표를 하나의 polyline으로 처리해야 하기 때문.
------------------- 코드 전문 -------------------------
import React, { useState } from 'react';
import { View, SafeAreaView, StyleSheet, FlatList, Button, Text } from 'react-native';
import MapView, {Marker} from 'react-native-maps';
import PolylineDirection from '@react-native-maps/polyline-direction';
const a = -36.888300;
const b = 174.608994;
const origin1 = { latitude: a, longitude: b };
const destination1 = { latitude: -36.884421, longitude: 174.611068 };
const origin2 = { latitude: -36.884421, longitude: 174.611068 };
const destination2 = { latitude: -36.881972, longitude: 174.615942 };
const GOOGLE_MAPS_APIKEY = 'googleApiKey';
const arr = [
{aaa:-36.888300,bbb:174.608994,ccc:"on",ddd:"시간"},
{aaa:-36.884421,bbb:174.611068,ccc:"on",ddd:"시간"},
{aaa:-36.881972,bbb:174.615942,ccc:"on",ddd:"시간"},
{aaa:-36.879012,bbb:174.621020,ccc:"on",ddd:"시간"},
{aaa:-36.874358,bbb:174.622397,ccc:"on",ddd:"시간"},
{aaa:-36.877665,bbb:174.630180,ccc:"on",ddd:"시간"}
]
function MyComponent() {
const [count, setCount] = useState(2);
const [polyArr, setPoly] = useState([]);
React.useEffect(() => {
(async () => {
const data = await dataSettings(arr);
setPoly(data);
})()
}, []);
return (
<View style={{ flex: 1 }}>
<MapView
style={{ flex: 1 }}
region={{
latitude: a,
longitude: b,
latitudeDelta: 0.01,
longitudeDelta: 0.01,
}}>
<Marker coordinate={{ latitude: -36.888300, longitude: 174.608994 }} />
{polypoly(polyArr)}
</MapView>
</View>
);
}
async function dataSettings(arr_data) {
let returnArr = [];
for (let i=0; i<arr_data.length-1; i++) {
let data = arr_data[i];
let nextData = arr_data[i+1];
returnArr.push({startLati:data.aaa, startLongi:data.bbb, endLati:nextData.aaa, endLongi:nextData.bbb, onOff:data.ccc, time:data.ddd})
}
for (let i=0; i<returnArr.length; i++) {
await fetch('https://maps.googleapis.com/maps/api/geocode/json?address=' + returnArr[i].startLati + ',' + returnArr[i].startLongi + '&key=' + GOOGLE_MAPS_APIKEY)
.then((response) => response.json())
.then((responseJson) => {
console.log('??????? ADDRESS GEOCODE is BACK!! => ' + JSON.stringify(responseJson));
})
}
return returnArr;
}
function polypoly(imsi) {
let aaa = [];
console.log("뻉" + imsi.length);
let leng = imsi.length;
for (let i=0; i<leng; i++) {
aaa.push(
<PolylineDirection
origin={{latitude: imsi[i].startLati, longitude: imsi[i].startLongi}}
destination={{latitude: imsi[i].endLati, longitude: imsi[i].endLongi}}
apiKey={GOOGLE_MAPS_APIKEY}
strokeWidth={i+1}
strokeColor="#12bc00"
/>);
}
return aaa;
}
export default MyComponent;
// 함수명, 변수명이 이상한건 그냥 넘어가 주세요 ^^
'React Native' 카테고리의 다른 글
react i18n 화폐 단위 설정 (0) | 2021.04.16 |
---|---|
백그라운드 플로팅 윈도우 버튼.. (0) | 2021.01.28 |
react native spannableText 특정 텍스트에 색칠하기.. (0) | 2020.08.10 |
React Native 함수형 코드를 클래스형 코드로 변경 / State에 대한 설명 (0) | 2020.07.02 |
RN Navigation v5 / React Native 화면 전환 (0) | 2020.06.29 |
- Total
- Today
- Yesterday
- nosql
- insert
- Android
- rn
- mac android
- not starting .bash_profile
- react native state
- ubunut 설치 link
- React Native
- 차번호 정규식
- 귀찮아;;
- not found adb
- mongo db
- 차번호 정규표현식
- 구글 맵 경로 그리기
- ubunut android
- 구글 맵 선그리기
- https://medium.com/@limgyumin/%EC%BD%94%ED%8B%80%EB%A6%B0-%EC%9D%98-apply-with-let-also-run-%EC%9D%80-%EC%96%B8%EC%A0%9C-%EC%82%AC%EC%9A%A9%ED%95%98%EB%8A%94%EA%B0%80-4a517292df29
- 클래스형 코드
- 함수형 코드
- 데이터베이스
- spannableText
- not working adb
- adb 환경변수
- 명령어
- https://hwan-shell.tistory.com/244
- 자바
- text 부분 색 칠하기
- 안드로이드
- MongoDB
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |