Шокирует тот факт, что пакет React-native-geolocation не может отображать заголовок устройства Android в реальном времени, несмотря на то, что lat и lng обновляются в реальном времени, а устройство движется. Я воздерживаюсь от использования onLocationChange, который сам встроен в карты Google, потому что он добавляет синий круглый значок, который я не могу обойти. Я предпочитаю использовать свой собственный значок маркера. Я выполнил инструкцию на странице github, но заголовок все равно не обновляется. Я решил использовать датчики на устройстве только для использования двух моих устройств, и все они не имеют магнитометра. Мне нужно корректно выйти и справиться, если на устройстве нет магнитометра. Я пытался использовать гироскоп, но в моих устройствах его тоже нет. Вторая часть меня шокировала, потому что аппаратные модули доступны уже давно. Я снова занимаюсь исправлением геолокации или есть ли способ удалить синий значок, который поставляется с onLocationChange. В любом случае проверьте мой код и посмотрите, есть ли какие-либо пробелы.
React.useEffect(() => {
Geolocation.requestAuthorization(() => {});
if (!origin && !destination && !recordingMode) {
if (watchId !== null) {
Geolocation.clearWatch(watchId);
setWatchId(null);
}
const noSaveWatchId = Geolocation.watchPosition(
(position) => {
const {
latitude,
longitude,
altitude,
accuracy,
speed,
heading: geoHeading,
altitudeAccuracy,
} = position.coords;
setCurrentPosition({
coordinate: { latitude, longitude },
altitude: altitude as number,
timestamp: position.timestamp,
accuracy: accuracy,
speed: speed as number,
heading: heading || (geoHeading as number),
altitudeAccuracy: altitudeAccuracy as number,
isFromMockProvider: (position as any).mocked,
});
},
(error) => console.log(error),
{
enableHighAccuracy: true,
distanceFilter: 0,
interval: 5000,
fastestInterval: 2000,
}
);
setWatchId(noSaveWatchId);
return () => {
if (noSaveWatchId !== null) {
Geolocation.clearWatch(noSaveWatchId);
}
};
} else if (origin && destination && recordingMode) {
if (watchId !== null) {
Geolocation.clearWatch(watchId);
setWatchId(null);
}
const saveWatchId = Geolocation.watchPosition(
(position) => {
const {
latitude,
longitude,
altitude,
accuracy,
speed,
heading: geoHeading,
altitudeAccuracy,
} = position.coords;
const bearing: number = calculateBearing(
latitude,
longitude,
destination.latitude,
destination.longitude
);
setCurrentPosition({
coordinate: { latitude, longitude },
altitude: altitude as number,
timestamp: position.timestamp,
accuracy: accuracy,
speed: speed as number,
heading: heading || bearing || (geoHeading as number),
altitudeAccuracy: altitudeAccuracy as number,
isFromMockProvider: (position as any).mocked,
});
if (
state &&
state.location.lat !== latitude &&
state.location.lng !== longitude
// state.location.heading !== heading
) {
dispatch({
type: Types.SetLocation,
payload: {
lat: latitude ?? 0,
lng: longitude ?? 0,
heading: heading ?? 0,
},
});
} else return;
makeLogEntry({
latitude,
longitude,
heading: heading || undefined,
})
.then(() => console.log("Log made successfully"))
.catch((error) => console.log("Error making log entry:", error));
},
(error) => console.log(error),
{
enableHighAccuracy: true,
distanceFilter: 0,
interval: 5000,
fastestInterval: 2000,
}
);
setWatchId(saveWatchId);
return () => {
if (saveWatchId !== null) {
Geolocation.clearWatch(saveWatchId);
}
};
}
}, [origin, destination, recordingMode]);
Подробнее здесь: https://stackoverflow.com/questions/790 ... ealtime-ac
API геолокации React-native, заголовок всегда равен нулю. Невозможно показать точное движение в реальном времени (androi ⇐ Android
Форум для тех, кто программирует под Android
1727087197
Anonymous
Шокирует тот факт, что пакет React-native-geolocation не может отображать заголовок устройства Android в реальном времени, несмотря на то, что lat и lng обновляются в реальном времени, а устройство движется. Я воздерживаюсь от использования onLocationChange, который сам встроен в карты Google, потому что он добавляет синий круглый значок, который я не могу обойти. Я предпочитаю использовать свой собственный значок маркера. Я выполнил инструкцию на странице github, но заголовок все равно не обновляется. Я решил использовать датчики на устройстве только для использования двух моих устройств, и все они не имеют магнитометра. Мне нужно корректно выйти и справиться, если на устройстве нет магнитометра. Я пытался использовать гироскоп, но в моих устройствах его тоже нет. Вторая часть меня шокировала, потому что аппаратные модули доступны уже давно. Я снова занимаюсь исправлением геолокации или есть ли способ удалить синий значок, который поставляется с onLocationChange. В любом случае проверьте мой код и посмотрите, есть ли какие-либо пробелы.
React.useEffect(() => {
Geolocation.requestAuthorization(() => {});
if (!origin && !destination && !recordingMode) {
if (watchId !== null) {
Geolocation.clearWatch(watchId);
setWatchId(null);
}
const noSaveWatchId = Geolocation.watchPosition(
(position) => {
const {
latitude,
longitude,
altitude,
accuracy,
speed,
heading: geoHeading,
altitudeAccuracy,
} = position.coords;
setCurrentPosition({
coordinate: { latitude, longitude },
altitude: altitude as number,
timestamp: position.timestamp,
accuracy: accuracy,
speed: speed as number,
heading: heading || (geoHeading as number),
altitudeAccuracy: altitudeAccuracy as number,
isFromMockProvider: (position as any).mocked,
});
},
(error) => console.log(error),
{
enableHighAccuracy: true,
distanceFilter: 0,
interval: 5000,
fastestInterval: 2000,
}
);
setWatchId(noSaveWatchId);
return () => {
if (noSaveWatchId !== null) {
Geolocation.clearWatch(noSaveWatchId);
}
};
} else if (origin && destination && recordingMode) {
if (watchId !== null) {
Geolocation.clearWatch(watchId);
setWatchId(null);
}
const saveWatchId = Geolocation.watchPosition(
(position) => {
const {
latitude,
longitude,
altitude,
accuracy,
speed,
heading: geoHeading,
altitudeAccuracy,
} = position.coords;
const bearing: number = calculateBearing(
latitude,
longitude,
destination.latitude,
destination.longitude
);
setCurrentPosition({
coordinate: { latitude, longitude },
altitude: altitude as number,
timestamp: position.timestamp,
accuracy: accuracy,
speed: speed as number,
heading: heading || bearing || (geoHeading as number),
altitudeAccuracy: altitudeAccuracy as number,
isFromMockProvider: (position as any).mocked,
});
if (
state &&
state.location.lat !== latitude &&
state.location.lng !== longitude
// state.location.heading !== heading
) {
dispatch({
type: Types.SetLocation,
payload: {
lat: latitude ?? 0,
lng: longitude ?? 0,
heading: heading ?? 0,
},
});
} else return;
makeLogEntry({
latitude,
longitude,
heading: heading || undefined,
})
.then(() => console.log("Log made successfully"))
.catch((error) => console.log("Error making log entry:", error));
},
(error) => console.log(error),
{
enableHighAccuracy: true,
distanceFilter: 0,
interval: 5000,
fastestInterval: 2000,
}
);
setWatchId(saveWatchId);
return () => {
if (saveWatchId !== null) {
Geolocation.clearWatch(saveWatchId);
}
};
}
}, [origin, destination, recordingMode]);
Подробнее здесь: [url]https://stackoverflow.com/questions/79014219/react-native-geolocation-api-heading-is-always-zero-unable-to-show-realtime-ac[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия