Сводка
Я разрабатываю приложение, которое отображает пользователей в качестве маркеров на карте. Приложение фильтрует пользовательские данные и только отображает маркеры для пользователей в радиусе 10 км из начального местоположения. Сбой. После этого приложение больше не сбои. Это говорит о том, что проблема связана с логикой рендеринга карты. < /Li>
< /ul>
Примечания
Эта проблема возникла только в устройствах iOS, отлично работает в Android.
Сводка Я разрабатываю приложение, которое отображает пользователей в качестве маркеров на карте. Приложение фильтрует пользовательские данные и только отображает маркеры для пользователей в радиусе 10 км из начального местоположения. Сбой. После этого приложение больше не сбои. Это говорит о том, что проблема связана с логикой рендеринга карты. < /Li> < /ul> Примечания Эта проблема возникла только в устройствах iOS, отлично работает в Android.[code]import { useMemo, useRef } from 'react'; import { alumniData } from '../../../data/alumniData';
export const useAlumniFilter = (userLocation, searchQuery, activeTab) => { // Store initial coordinates permanently - only set once const storedCoordinates = useRef(null);
// Set coordinates only if not already stored and userLocation is available if (!storedCoordinates.current && userLocation) { storedCoordinates.current = { lat: userLocation.latitude, lon: userLocation.longitude }; }
// Use stored coordinates or fallback to default const coordinates = storedCoordinates.current || { lat: -7.799686848512109, lon: 110.35255749979842 };
// Common filter function for both tabs const filterAlumniByQuery = useMemo(() => { return (dataToFilter, query) => { // Early return for empty search if (!query || query.trim() === '') { return dataToFilter; }
const searchQuery = query.toLowerCase().trim();
return dataToFilter.filter((alumni) => { try { // Add safety checks for alumni data if (!alumni || typeof alumni !== 'object') { return false; }
// Check if any word in name starts with query const nameMatch = nameWords.some(word => word.startsWith(searchQuery));
// Check if second word in batch starts with query (with safety check) const batchMatch = batchWords.length > 1 && batchWords[1].startsWith(searchQuery);
// Apply the same filter logic to the selected source data const filteredAlumni = useMemo(() => { return filterAlumniByQuery(sourceData, searchQuery); }, [sourceData, searchQuery, filterAlumniByQuery]);
return { nearbyAlumni, filteredAlumni, sourceData, userCoordinates: coordinates // Return stored coordinates for reference }; }; [/code] Шаги по воспроизведению https://github.com/user-attachments/assets/13eaaf9d-b673-45e7-ae98-732aec88ff62 Входной входной вход, а затем очистите вход или делите с помощью клавиатуры. Наконец, введите что -нибудь еще раз.>