Intereting Posts
Firebase с мобильными приложениями Правильный макет для обнаружения маяка Kontakt на Android с помощью AltBeacon Кнопка полуширины экрана Android – значение по умолчанию в editText Как сделать приложение с действительно многоязычными строками? В андроиде как настроить изображение заголовка навигационного ящика и его программное имя в файле класса? Android / Eclipse: где я могу найти папку /Users/USER_NAME/.android/debug.keystore? Динамически изменить предел ссылки на запрос Firebase Query на Android Android 1.6 & Fragment & Tabhost Как изменить стиль выбора даты в Android? Android, canvas: Как очистить (удалить содержимое) холста (= растровые изображения), живущего в surfaceView? Создание базового PSD для разработки пользовательского интерфейса Android App для устройства mdpi, 320 / 480px Android – создать виртуальную камеру или перезаписать реальный поток Cam? (/ Dev / msm_camera / frame0, v4l2loopback)? Android ContentProvider вызывает всплески setNotificationUri () в CursorAdapter, когда много строк вставляются с пакетной операцией Версия Android IntelliJ sdk

Кэширование наложений путем округления прямоугольников координат – как?

У меня есть карта с оверлеями, которую я хочу кэшировать – в каждом месте, которое посетитель посетил на карте (которая является областью прямоугольника) – я проверяю, есть ли у меня кеш оверлеев, которые находятся в этом прямоугольнике.

Чтобы улучшить кеширование (поэтому, если пользователь ранее был на том же прямоугольнике, за исключением того, что теперь он находится в нескольких метрах от предыдущего прямоугольника) – я хочу «округлить» координаты.

Таким образом, каждый раз, когда пользователь находится в прямоугольнике – я проверяю, подобен ли этот прямоугольник ранее кэшированным прямоугольникам, и если я приведу результат кэширования.

Кроме того, если пользователь уменьшен, а его прямоугольник содержится в более крупном (предварительно кэшированном) прямоугольнике – тогда я также могу использовать кешированный прямоугольник.

Какие-либо предложения ?

Solutions Collecting From Web of "Кэширование наложений путем округления прямоугольников координат – как?"

Если вы просто смотрите, как сгруппировать координаты, определите максимальную разницу между координатами по x и y или широтой и долготой, которую вы хотите. Тогда вы можете сгруппировать их двумя способами. Первое проще, но оно будет медленным, если у вас много очков.

Скажем, у нас есть структура данных, называемая cachedPoints, максимальное расстояние между связанными точками, называемое maxdistance, и новая точка, которую мы пытаемся проверить, если она близка к другой названной точке.

for each cachedPoint in cachedPoints { if (point.x - cachedPoint.x < maxdistance) { if (point.y - cachedPoint.y < maxdistance) { cachedPoint.incrementvisits(); } } } 

Другим способом является использование структуры данных, отсортированной по x или широте, а затем поиск, чтобы увидеть, есть ли кешированная точка с x или широтой в пределах максимального расстояния точки, затем проверьте y или долготу. Это будет немного быстрее, но для реализации потребуется какой-то хеш-код и добавит кучу сложности, которая вам может не понадобиться.

Надеюсь, это то, о чем вы просите.

Если вы настроили структуру данных, например:

 var a = { 'scales' : [50, 100, 200, 400, 1000], 'cachedRects': [{'location': 'rect-large-1234-5678.png', x: 1234, y: 5678, scale: 3} {'location': 'rect-small-1240-5685.png', x: 1240, y: 5685, scale: 1} ] } 

Вы можете использовать функцию modulo для этого:

 var currentx = GetCurrentX(); var currenty = GetCurrentY(); var currentScale = GetCurrentScale(); var rectFound = false; foreach(rect in a.cachedRects) { if (rect.scale === currentScale && currentx % a.scales[currentScale] === rect.x && currenty % a.scales[currentScale] === rect.y) { rectFound = true; useOverlay(rect); break; } } if(!rectFound) { //could loop again for a larger rectangle of a lower scale. } 

Вышесказанное может или не может оказаться действительным JS – я не пытался его запустить. Так или иначе, я надеюсь, что вы получите суть.

Эй Вы можете добавить маркер в Google map v2 в android.

Здесь я даю код для добавления маркера

  MarkerOptions mOpt = new MarkerOptions(); mOpt.position(new LatLng(userHstry.getMyLatlng().latitude, userHstry.getMyLatlng().longitude)); // map.clear(); mOpt.title("Address : " + userHstry.getAddress()).snippet("Date : " + userHstry.getDate() + " , Time : " + userHstry.getTime()); map.addMarker(mOpt);