Giter VIP home page Giter VIP logo

Comments (13)

alemeh avatar alemeh commented on June 16, 2024 1

Это у меня в коде была проблема - я несколько раз добавлял одни и те же точки PlaceMarkObject
Карта работает шустро, спасибо) Тикет можно закрыть.

На будущее: очень не хватает метода массовой загрузки точек аналогичного ObjectManager в веб-версии либы.

from mapkit-android-demo.

eberkovich avatar eberkovich commented on June 16, 2024

Уточните пожалуйста как расположены эти объекты, не получается ли большой overdraw.
Кроме того, какое количество разных иконок используется?
Сколько создается объектов ImageProvider?

from mapkit-android-demo.

alemeh avatar alemeh commented on June 16, 2024

Объекты расположены достаточно равномерно по всей территории России но конечно же есть наложение точек друг на друга. Иконки не используются (хотя в дальнейшем планирую), соответственно ImageProvider тоже не используется

from mapkit-android-demo.

eberkovich avatar eberkovich commented on June 16, 2024

а лаги происходят при добавлении или потом тоже?

from mapkit-android-demo.

alemeh avatar alemeh commented on June 16, 2024

Лаги в момент добавления если и есть то они некритичны для пользователя, т.к. он видит что "карта загружается". Критично то, что когда пользователь пытается перемещать карту то скролл тормозит и карта дергается, двигается не плавно.

from mapkit-android-demo.

Tagakov avatar Tagakov commented on June 16, 2024

Попробуйте пожалуйста воспроизвести тормоза с новым мапкитом версии 3.1.1

from mapkit-android-demo.

alemeh avatar alemeh commented on June 16, 2024

Уже лучше, карта двигается поживее,

Но! Иногда либа падает, привожу 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.

eberkovich avatar eberkovich commented on June 16, 2024

Падает вызов setIcon, уточните пожалуйста какое количество объектов ImageProvider создается?

На всякий случай поясню: для одинаковых иконок нужно использовать один и тот же экземпляр объекта ImageProvider или если создавать новые экземпляры то так, чтобы метод getId() для одинаковых иконок возвращал одно и тоже значение.

from mapkit-android-demo.

Tagakov avatar Tagakov commented on June 16, 2024

alemeh, вы же вроде говорили, что не используете ImageProvider и у вас у всех точек стиль "по умолчанию"

from mapkit-android-demo.

cdump avatar cdump commented on June 16, 2024

@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.

eberkovich avatar eberkovich commented on June 16, 2024

@cdump, изначально mapkit не рассчитан на поддержку такого большого количества точечных объектов (ориентировались максимум на 500), но, в связи со значительным количеством такого рода запросов, мы занялись оптимизациями для таких сценариев. Надеюсь, что в один из следующих релизов войдет исправление.
В данный момент можно ограничить количество точечных объектов, добавляя только видимые и удаляя невидимые объекты. А также реализовать кластеризацию для обзорных масштабов.

from mapkit-android-demo.

eberkovich avatar eberkovich commented on June 16, 2024

Сделали некоторое количество оптимизаций, которые должны ускорить создание точечных объектов, кроме того добавили методы для пакетного добавления объектов, так же ускоряющие этот процесс:

MapObjectCollection.addPlacemarks()
MapObjectCollection.addEmptyPlacemarks()

from mapkit-android-demo.

ivan8m8 avatar ivan8m8 commented on June 16, 2024

Сделали некоторое количество оптимизаций, которые должны ускорить создание точечных объектов, кроме того добавили методы для пакетного добавления объектов, так же ускоряющие этот процесс:

MapObjectCollection.addPlacemarks()
MapObjectCollection.addEmptyPlacemarks()

@eberkovich
А если за каждой меткой на карте мне нужно закрепить реальный id объекта с сервера
placemark.userData = id,
тогда два метода выше не помогут?

from mapkit-android-demo.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.