Comments (13)
Это у меня в коде была проблема - я несколько раз добавлял одни и те же точки PlaceMarkObject
Карта работает шустро, спасибо) Тикет можно закрыть.
На будущее: очень не хватает метода массовой загрузки точек аналогичного ObjectManager в веб-версии либы.
from mapkit-android-demo.
Уточните пожалуйста как расположены эти объекты, не получается ли большой overdraw.
Кроме того, какое количество разных иконок используется?
Сколько создается объектов ImageProvider?
from mapkit-android-demo.
Объекты расположены достаточно равномерно по всей территории России но конечно же есть наложение точек друг на друга. Иконки не используются (хотя в дальнейшем планирую), соответственно ImageProvider тоже не используется
from mapkit-android-demo.
а лаги происходят при добавлении или потом тоже?
from mapkit-android-demo.
Лаги в момент добавления если и есть то они некритичны для пользователя, т.к. он видит что "карта загружается". Критично то, что когда пользователь пытается перемещать карту то скролл тормозит и карта дергается, двигается не плавно.
from mapkit-android-demo.
Попробуйте пожалуйста воспроизвести тормоза с новым мапкитом версии 3.1.1
from mapkit-android-demo.
Уже лучше, карта двигается поживее,
Но! Иногда либа падает, привожу stacktrace
--------- beginning of crash
2018-10-24 17:51:50.601 31556-31556/org.devlee.android.csn.canary A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 31556 (roid.csn.canary)
2018-10-24 17:51:50.717 31944-31944/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
2018-10-24 17:51:50.718 31944-31944/? A/DEBUG: Build fingerprint: 'samsung/heroqltetmo/heroqltetmo:7.0/NRD90M/G930TUVS4BQC1:user/release-keys'
2018-10-24 17:51:50.718 31944-31944/? A/DEBUG: Revision: '15'
2018-10-24 17:51:50.718 31944-31944/? A/DEBUG: ABI: 'arm'
2018-10-24 17:51:50.719 31944-31944/? A/DEBUG: pid: 31556, tid: 31556, name: roid.csn.canary >>> org.devlee.android.csn.canary <<<
2018-10-24 17:51:50.719 31944-31944/? A/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
2018-10-24 17:51:50.736 31944-31944/? A/DEBUG: Abort message: 'art/runtime/indirect_reference_table.cc:128] JNI ERROR (app bug): global reference table overflow (max=51200)'
2018-10-24 17:51:50.737 31944-31944/? A/DEBUG: r0 00000000 r1 00007b44 r2 00000006 r3 00000008
2018-10-24 17:51:50.737 31944-31944/? A/DEBUG: r4 f146358c r5 00000006 r6 f1463534 r7 0000010c
2018-10-24 17:51:50.737 31944-31944/? A/DEBUG: r8 00000000 r9 edd0ee74 sl 000014d0 fp edcd46df
2018-10-24 17:51:50.737 31944-31944/? A/DEBUG: ip 0000000b sp ffdf2468 lr ee87b6f7 pc ee87df78 cpsr 20070010
2018-10-24 17:51:50.760 31944-31944/? A/DEBUG: backtrace:
2018-10-24 17:51:50.760 31944-31944/? A/DEBUG: #00 pc 00049f78 /system/lib/libc.so (tgkill+12)
2018-10-24 17:51:50.760 31944-31944/? A/DEBUG: #1 pc 000476f3 /system/lib/libc.so (pthread_kill+34)
2018-10-24 17:51:50.760 31944-31944/? A/DEBUG: #2 pc 0001d829 /system/lib/libc.so (raise+10)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #3 pc 00019321 /system/lib/libc.so (__libc_android_abort+34)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #4 pc 00017388 /system/lib/libc.so (abort+4)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #5 pc 00317f9d /system/lib/libart.so (_ZN3art7Runtime5AbortEv+252)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #6 pc 000b47f9 /system/lib/libart.so (_ZN3art10LogMessageD2Ev+864)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #7 pc 001bb31b /system/lib/libart.so (_ZN3art22IndirectReferenceTable3AddEjPNS_6mirror6ObjectE+194)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #8 pc 002384f9 /system/lib/libart.so (_ZN3art9JavaVMExt12AddGlobalRefEPNS_6ThreadEPNS_6mirror6ObjectE+32)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #9 pc 0026188f /system/lib/libart.so (_ZN3art3JNI12NewGlobalRefEP7_JNIEnvP8_jobject+418)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #10 pc 000caf7f /system/lib/libart.so (_ZN3art8CheckJNI6NewRefEPKcP7_JNIEnvP8_jobjectNS_15IndirectRefKindE+506)
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #11 pc 00180538 /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.runtime.so
2018-10-24 17:51:50.761 31944-31944/? A/DEBUG: #12 pc 00187b6c /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.runtime.so (_ZN6yandex4maps7runtime7android8toStringEP8_jstring+608)
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #13 pc 001cb564 /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.runtime.so
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #14 pc 001cc49c /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.runtime.so
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #15 pc 001ce588 /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.runtime.so (_ZN6yandex4maps7runtime5image7android20ImageProviderBindingC1EN5boost13intrusive_ptrI8_jobjectEE+64)
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #16 pc 00465160 /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.mapkit.so
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #17 pc 00466604 /data/app/org.devlee.android.csn.canary-1/lib/arm/libcom.yandex.mapkit.so (Java_com_yandex_mapkit_map_internal_PlacemarkMapObjectBinding_setIcon__Lcom_yandex_runtime_image_ImageProvider_2+52)
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #18 pc 000ada19 /system/lib/libart.so (art_quick_generic_jni_trampoline+40)
2018-10-24 17:51:50.762 31944-31944/? A/DEBUG: #19 pc 0003a961 /dev/ashmem/dalvik-jit-code-cache (deleted)
from mapkit-android-demo.
Падает вызов setIcon, уточните пожалуйста какое количество объектов ImageProvider создается?
На всякий случай поясню: для одинаковых иконок нужно использовать один и тот же экземпляр объекта ImageProvider или если создавать новые экземпляры то так, чтобы метод getId() для одинаковых иконок возвращал одно и тоже значение.
from mapkit-android-demo.
alemeh, вы же вроде говорили, что не используете ImageProvider и у вас у всех точек стиль "по умолчанию"
from mapkit-android-demo.
@eberkovich у меня похожая проблема с "global reference table overflow":
A/zygote64: indirect_reference_table.cc:278] JNI ERROR (app bug): global reference table overflow (max=51200) indirect_reference_table.cc:278] global reference table dump: indirect_reference_table.cc:278] Last 10 entries (of 51200): indirect_reference_table.cc:278] 51199: 0x139234e0 java.lang.String "bitmap:48e2d057-... (43 chars) indirect_reference_table.cc:278] 51198: 0x139233d0 com.yandex.runtime.image.ImageProvider$1 indirect_reference_table.cc:278] 51197: 0x13090c18 com.yandex.mapkit.map.internal.CompositeIconBinding indirect_reference_table.cc:278] 51196: 0x13090a68 com.yandex.mapkit.map.internal.PlacemarkMapObjectBinding indirect_reference_table.cc:278] 51195: 0x139233d0 com.yandex.runtime.image.ImageProvider$1 indirect_reference_table.cc:278] 51194: 0x13090a20 com.yandex.mapkit.map.internal.CompositeIconBinding indirect_reference_table.cc:278] 51193: 0x13090870 com.yandex.mapkit.map.internal.PlacemarkMapObjectBinding indirect_reference_table.cc:278] 51192: 0x139233e8 com.yandex.runtime.image.ImageProvider$1 indirect_reference_table.cc:278] 51191: 0x139233d0 com.yandex.runtime.image.ImageProvider$1 indirect_reference_table.cc:278] 51190: 0x130907b8 com.yandex.mapkit.map.internal.CompositeIconBinding indirect_reference_table.cc:278] Summary: indirect_reference_table.cc:278] 14431 of com.yandex.mapkit.map.internal.PlacemarkMapObjectBinding (14431 unique instances) indirect_reference_table.cc:278] 14431 of com.yandex.mapkit.map.internal.CompositeIconBinding (14431 unique instances) indirect_reference_table.cc:278] 14430 of com.yandex.runtime.image.ImageProvider$1 (52 unique instances) indirect_reference_table.cc:278] 7214 of io.testapp.MyObject (7214 unique instances) indirect_reference_table.cc:278] 360 of java.lang.Class (257 unique instances) indirect_reference_table.cc:278] 197 of java.nio.DirectByteBuffer (185 unique instances)
Вот мой код:
`mzoomed = mapView.getMap().addMapObjectLayer("plzoomed");
mnormal = mapView.getMap().addMapObjectLayer("plnormal");
//...
for (MyObject obj : resp.data) {
mnormal.addPlacemark(obj.coord, resp.groups.get(obj.groupID).icon);
mzoomed.addPlacemark(obj.coord, resp.groups.get(obj.groupID).iconZoom).setUserData(obj);
}`
я отображаю либо mnormal
либо mzoomed
- одни и те же объекты, но с разными иконками, в зависимости от текущего зума. Объектов в resp.data
около 7000 штук, падения начались когда добавил setUserData
, но и до этого видно что было близко к лимиту в 512000
Иконок для груп объектов у меня по 26 штук (как и различных obj.groupID), т.е. всего 52 штуки.
from mapkit-android-demo.
@cdump, изначально mapkit не рассчитан на поддержку такого большого количества точечных объектов (ориентировались максимум на 500), но, в связи со значительным количеством такого рода запросов, мы занялись оптимизациями для таких сценариев. Надеюсь, что в один из следующих релизов войдет исправление.
В данный момент можно ограничить количество точечных объектов, добавляя только видимые и удаляя невидимые объекты. А также реализовать кластеризацию для обзорных масштабов.
from mapkit-android-demo.
Сделали некоторое количество оптимизаций, которые должны ускорить создание точечных объектов, кроме того добавили методы для пакетного добавления объектов, так же ускоряющие этот процесс:
MapObjectCollection.addPlacemarks()
MapObjectCollection.addEmptyPlacemarks()
from mapkit-android-demo.
Сделали некоторое количество оптимизаций, которые должны ускорить создание точечных объектов, кроме того добавили методы для пакетного добавления объектов, так же ускоряющие этот процесс:
MapObjectCollection.addPlacemarks() MapObjectCollection.addEmptyPlacemarks()
@eberkovich
А если за каждой меткой на карте мне нужно закрепить реальный id объекта с сервера
placemark.userData = id
,
тогда два метода выше не помогут?
from mapkit-android-demo.
Related Issues (20)
- Тёмная тема | Thema dark HOT 1
- Поворот камеры на север HOT 1
- Simple Routing in Lite version HOT 1
- Fatal Exception: java.lang.UnsatisfiedLinkError dlopen failed HOT 5
- Blurring is non operational HOT 1
- Краш приложения при изменении зума HOT 9
- Обёртка для Jetpack Compose. Попытка №2
- Yandex mapkit sdk on c+/qt HOT 1
- Не отображается метка на карте в приложении. HOT 1
- Как идентифицировать метку HOT 2
- Padding видимой области на экране. HOT 1
- Срабатывает движение карты при жесте "назад" HOT 3
- Краш при вызове invalidate() с использованием GEO_JSON tile format HOT 1
- При загрузке карты mapKit приложение крашится или уходит в ANR, иногда карта может отобразиться, но отображается просто сеткой, это все логи, что есть HOT 1
- При загрузке карты mapKit приложение крашится или уходит в ANR, иногда карта может отобразиться, но отображается просто сеткой, это все логи, что есть HOT 2
- Как скрывать пройденные сегменты маршрута Mapkit SDK HOT 2
- Нахождение точки в полигоне HOT 1
- Корректный способ поиска адреса выбранной точки HOT 1
- Flutter yandex map HOT 3
- Не загружаются тайлы и маркеры(Samsung) HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from mapkit-android-demo.