По сути, когда я нажимаю кнопку, моя функция начинает прослушивать изменения координат и объединять вновь собранные данные в массив.
При повторном нажатии кнопки прослушиватель будет удален. Пользователь может нажать кнопку и снова начать слушать новый набор координат. Они могут делать это неоднократно.
this.state = {
pathArray: [], // originally a 1D array, should become 2D as user keep using the app
pathCount: 0,
}
Вот как должен выглядеть окончательный массив, чтобы я мог приступить к части рендеринга. Я хочу иметь возможность динамически создавать новый индекс в массиве, чтобы новые данные помещались в конец списка.
Как я могу создать новый массив внутри корневого массива при нажатии кнопки и продолжать добавлять объекты в дочерний массив до тех пор, пока кнопка не будет нажата снова. Если кнопка нажата снова, новый дочерний массив будет создан снова, и процесс будет продолжаться и дальше.
pathArray = [
[
{ lat: 0, long: 0 },
{ lat: 1, long: 2 },
],
[
{ lat: 0, long: 0 },
{ lat: 1, long: 2 },
],
]
onButtonPressed = () => {
const { running } = this.state
if (!this.state.running) {
this.followWatchCoords() // start collecting data
} else {
this.stopFollowing() //stop collecting data
}
}
followWatchCoords = () => {
this.followUserWatchID = navigator.geolocation.watchPosition(({ coords }) => {
this.calculateDistance(coords)
}, null, GEOLOCATION_SETTINGS)
}
calculateDistance = (coords) => {
const { latitude, longitude } = coords
const positionLatLong = pick(coords, ['latitude', 'longitude'])
let newArr = this.state.pathArray.slice(); //copy array to mutate
newArr.push(positionLatLong)
this.setState({
pathArray: newArr,
})
}
pathArray.push([])
. Чтобы добавить элементы в этот вновь созданный массив:pathArray[pathArray.length - 1].push({lat: 1, long: 2})
. - person abhishekkannojia   schedule 30.05.2017