2016-02-08 1 views

ответ

0

Вы должны иметь возможность получить список, используя метод getMapPackages(). Документация ссылка: https://developer.here.com/mobile-sdks/documentation/android-hybrid-plus/topics/maps-offline.html

+0

getMapPackages() return boolean not Список целых чисел, я хочу установить пользовательские пакеты перед использованием карты, но я не могу найти идентификаторы пакетов. –

1

Вы должны использовать MapLoader#getMapPackages() API, чтобы получить корневой MapPackage объект. Затем вы можете использовать метод MapPackage#getId(), чтобы найти идентификаторы стран/регионов, которые вы хотите установить. Обратите внимание, что объект MapPackage не возвращается непосредственно из вызова MapLoader#getMapPackages(), а вместо него через объект Listener. Вы должны предоставить свою собственную реализацию MapLoader.Listener и установить ее с помощью метода MapLoader#addListener(MapLoader.Listener listener) перед вызовом getMapPackages().

Для примера:

MapLoader.Listener mapLoaderListener = new MapLoader.Listener() { 
    public void onUninstallMapPackagesComplete(MapPackage rootMapPackage, 
    MapLoader.ResultCode mapLoaderResultCode) { 
    } 
    public void onProgress(int progressPercentage) { 
    } 
    public void onPerformMapDataUpdateComplete(MapPackage rootMapPackage, 
    MapLoader.ResultCode mapLoaderResultCode) { 
    } 
    public void onInstallationSize(long diskSize, long networkSize) { 
    } 
    public void onInstallMapPackagesComplete(MapPackage rootMapPackage, 
     MapLoader.ResultCode mapLoaderResultCode) { 
    } 
    public void onGetMapPackagesComplete(MapPackage rootMapPackage, 
     MapLoader.ResultCode mapLoaderResultCode) { 

     // This method will be called after MapLoader#getMapPackages() 
     // is called 
     // You can use the rootMapPackage object to find the Id's to 
     // pass to installMapPackages() 

    } 
    public void onCheckForUpdateComplete(boolean updateAvailable, 
    String currentMapVersion,String newestMapVersion, 
      MapLoader.ResultCode mapLoaderResultCode) { 
    } 
}; 

MapLoader mapLoader = MapLoader.getInstance(); 

mapLoader.addListener(mapLoaderListener); 
mapLoader.getMapPackages(); 

Более подробная информация здесь:

  • Руководство разработчика

https://developer.here.com/mobile-sdks/documentation/android-hybrid-plus/topics/maps-offline.html

  • API Reference

https://developer.here.com/mobile-sdks/documentation/android-hybrid-plus/topics_api_nlp_hybrid_plus/com-here-android-mpa-odml-maploader.html

https://developer.here.com/mobile-sdks/documentation/android-hybrid-plus/topics_api_nlp_hybrid_plus/com-here-android-mpa-odml-maploader-listener.html

https://developer.here.com/mobile-sdks/documentation/android-hybrid-plus/topics_api_nlp_hybrid_plus/com-here-android-mpa-odml-mappackage.html

0

Единственный способ (я думаю), это рекурсивный вызов GetChildren() на MapPackage, а затем проверить GetTitle() для каждого пакета детей чтобы найти регион, в котором вы нуждаетесь.

Например, чтобы получить идентификатор «Bretagne» регион во Франции, вы должны пройти через rootMapPackage.getChildren(). Получим (2/Европа /).getChildren().get(1/ Франция /).getChildren().get(3/ Bretagne /). GetId()

Не очень удобно. Метод «поиск (заголовок строки)» в корневом пакете был бы удобен.

Смежные вопросы