Pakiet niestandardowy
Przegląd
W aplikacji OsmAnd można tworzyć wiele dostosowań i eksportować je do pliku .osf
. Po dodaniu opisu, obrazu i ikony, te dostosowania stają się całkowicie niezależną wtyczką. Taka wtyczka może zawierać:
- Wszystkie Ustawienia profilu z nowym profilem.
- Określony zestaw szybkich akcji i układów menu dla Szuflady i Menu kontekstowego.
- Niestandardową mapę offline wewnątrz wtyczki lub sugerowaną do pobrania.
- Specyficzne typy trasowania online i mapy online.
Jak utworzyć
Plik .osf
to plik .zip
o zmienionej nazwie, zawierający pliki .json
i foldery. Jako przykład można pobrać nasze przygotowane pliki z Dysku Google lub gotową wtyczkę z tego linku.
Możesz modyfikować pliki .json
za pomocą pliku items.json OsmAnd, który zawiera polecenia do importowania plików .json
, plików .obf
, ikon i innych.
Może być konieczne przeczytanie:
- O formacie
.json
. - O edytorach tekstu, za pomocą których można otwierać i edytować pliki w formacie JSON.
- O edytorze Sublime Text, który jest używany w OsmAnd jako odniesienie.
- Możesz sprawdzić swój kod w JSON Editor Online.
items.json
Plik items.json OsmAnd.
{
"version":1,
"items":[
{
"type":"PLUGIN",
"pluginId":"test.plugin",
"version" : 1,
"icon": {
"" : "@plugin-id.png"
},
"image": {
"" :"@plugin-image.webp"
},
"name":{
"":"Testowa wtyczka",
"ru":"Testowa wtyczka: język RU"
},
"description":{
"":"Ten pakiet jest pakietem testowym i wyświetla informacje testowe.",
"ru":"Ten pakiet jest pakietem testowym i wyświetla informacje testowe. Język RU."
}
},
{
"type":"RESOURCES",
"pluginId":"test.plugin",
"file":"res"
},
{
"type":"DOWNLOADS",
"pluginId":"test.plugin",
"items":[
{
"path":"test",
"name":{
"":"Moje mapy offline",
"ru":"RU: Moje mapy offline"
},
"icon":{
"":"ic_world_globe_dark"
},
"header-color":"#002E64",
"description":{
"text":{
"":"Ten pakiet to zbiór źródeł map online i offline różnego typu.",
"ru":"RU: Ten pakiet to zbiór źródeł map online i offline różnego typu."
},
"button":[
{
"":"Czat Telegram OsmAnd",
"url":"https:\/\/t.me\/OsmAndMaps"
}
]
}
},
{
"scope-id":"offline-maps",
"path":"test/Waterway",
"header-color":"#002E64",
"name":{
"":"Droga wodna",
"ru":"RU: droga wodna"
},
"icon":{
"":"ic_world_globe_dark"
},
"items":[
{
"name":{
"":"Mapa offline dróg wodnych SA",
"ru":"RU: Mapa offline dróg wodnych SA"
},
"filename":"waterway.obf.zip",
"type":"map",
"isHidden":"true",
"timestamp":1582994500,
"containerSize":28195301,
"contentSize":28195301,
"description":{
"text":{
"":"Min. powiększenie: 0<br />Maks. powiększenie: 19<br />Kraje: SA",
"ru":"RU: Min. powiększenie: 0<br />Maks. powiększenie: 19<br />Kraje: SA"
},
"image":[
"https://drive.google.com/uc?id=16HjUHsSWNgeQI0bmuup9ohpyrg6rWkHH&export=download"
]
},
"downloadurl":"https://drive.google.com/uc?id=10iP2VZexHtHC0QLhACZ1QoEy-duNN5Wg&export=download",
"firstsubname":{
"":"Droga wodna",
"ru":"RU: Droga wodna"
},
"secondsubname":{
"":"",
"ru":""
}
}
]
}]
},
{
"type":"PROFILE",
"pluginId":"test.plugin",
"file":"bicycle_test.json",
"appMode":{
"iconColor":"RED",
"iconName":"ic_action_motorcycle_dark",
"locIcon":"BENTLEY",
"navIcon":"BENTLEY",
"order":32,
"parent":"bicycle",
"stringKey":"bicycle_test",
"userProfileName" : "Testowy prof."
},
"prefs" : {
"drawer_logo": { "" : "@logo.png"},
"drawer_url" : { "" : "https://osmand.net"},
"drawer_items" : { "hidden" : ["dashboard"], "order" : ["map_markers", "my_places", "search"] },
"context_menu_items" : {},
"configure_map_items" : {},
"route_service":"OSMAND",
"renderer":"test-rendering.render.xml",
"routing_profile":"routing-test.xml/test-car"
}
},
{
"type":"FILE",
"pluginId":"test.plugin",
"subtype" : "rendering_style",
"file":"\/rendering\/test-rendering.render.xml"
},
{
"type":"FILE",
"pluginId":"test.plugin",
"subtype" : "routing_config",
"file":"\/routing\/routing-test.xml"
},
{
"type":"SUGGESTED_DOWNLOADS",
"pluginId":"test.plugin",
"comment-1" : "search-type to latlon (najbliższy wg latlon), worldregion (wg granic, jeśli nazwa pasuje do downloadName worldRegion, tak jak w przypadku typów domyślnych), domyślnie porządek naturalny, limit znajduje pierwsze N elementów",
"comment-2" : "predefiniowane scope-id to @type z indexes.xml map, srtm_map, road_map, wikimap, wikivoyage, hillshade, slope, fonts, voice, depth ",
"comment-3" : "filtry nazw ignorują wielkość liter wg name.contains(filterName)",
"items": [{
"scope-id" : "test-downloads",
"limit" : 1,
"search-type" : "latlon"
}, {
"scope-id" : "road_map",
"names" : [
"Poland_lesser-poland_europe_2.obf.zip", "netherlands_noord-holland_europe"]
}, {
"scope-id" : "wikimap",
"search-type" : "worldregion"
}]
},
{
"type":"NAVIGATION_ICONS",
"pluginId":"test.plugin",
"items" : [{
"locationIcon": {
"" : "@bentley-car.png"
},
"locationIconId": "BENTLEY",
"navigationIcon": {
"" : "@bentley-car-moving.png"
},
"navigationIconId": "BENTLEY"
}]
},
{
"type":"QUICK_ACTIONS",
"pluginId":"test.plugin",
"items": [{
"name": "Testowa szybka akcja",
"actionType": "osmbug.add",
"params": "{\"dialog\":\"false\",\"message\":\"Message\"}"
}]
},
{
"type":"POI_UI_FILTERS",
"pluginId":"test.plugin",
"items": [{
"name": "Testowe wyszukiwanie",
"filterId": "test_search",
"acceptedTypes": "{\"sustenance\":[\"bar\",\"alpine_hut\"]}"
}]
},
{
"type":"MAP_SOURCES",
"pluginId":"test.plugin",
"items": [{
"sql": false,
"name": "OsmAnd (test)",
"minZoom": 1,
"maxZoom": 19,
"url": "https:\/\/tile.osmand.net\/hd\/{0}\/{1}\/{2}.png",
"ellipsoid": false,
"inverted_y": false,
"timesupported": false,
"expire": -1,
"inversiveZoom": false,
"ext": ".png",
"tileSize": 512,
"bitDensity": 8,
"avgSize": 18000
}]
}
]
}
Typy importu
Istnieje wiele typów importu dla pliku items.JSON OsmAnd. Wszystkie typy można znaleźć tutaj, a ten artykuł opisuje tylko kilka z nich.
Opis wtyczki
Na początek tworzysz i dodajesz swoją wtyczkę do items.JSON. Pierwszym typem importu jest "PLUGIN".
UWAGA. Musisz utworzyć i dodać tę linię dla każdego typu "pluginId":"test.plugin", gdzie test.plugin to nazwa Twojego pakietu.
Obrazy wtyczki
Aby zaimportować obrazy ikon wtyczki do OsmAnd, utwórz folder (w naszym przykładzie jest to folder "res”), w którym będą przechowywane pliki obrazów. Nazwa tego typu to "RESOURCES".
Profile
Używając typu "PROFILE” możesz dodać profil nawigacyjny dla swojej wtyczki. Wszystkie informacje o swoim profilu nawigacyjnym możesz uzyskać w wyeksportowanym pliku JSON, gdzie można odczytać, które typy items.JSON zostały dodane (“QUICK_ACTIONS”, “POI_UI_FILTERS”, “MAP_SOURCES ” lub inne). UWAGA: Zacznij tworzyć profil nawigacyjny ze wszystkimi parametrami, w tym celu wyeksportuj profile nawigacyjne i skopiuj niezbędne elementy z pliku profiles.osf (items.JSON) do pliku PLUGIN.osf (items.JSON).
Pobrane pliki
Możesz dodać dowolne pliki, takie jak SQLite, OBF lub czcionki do pobrania, używając typu "DOWNLOADS". Główne typy plików do pobrania można znaleźć tutaj.
UWAGA. Tag "isHidden":"true" (domyślnie jest to false) może ukryć dane mapy przed Mapami i zasobami OsmAnd. W "scope-id" możesz dodać wszystkie niezbędne informacje o adresie URL pliku, nazwie, opisie i nie tylko.
Sugerowane pliki do pobrania
W typie "SUGGESTED_DOWNLOADS" możesz pobrać mapy, które OsmAnd oferuje podczas importowania nowej wtyczki.
Pliki
W typie "FILE" możesz dodawać pliki z folderów wtyczki do folderów OsmAnd, których "podtyp" można znaleźć tutaj. W podanym przykładzie dodano pliki routing.xml i rendering.xml. O tym, jak tworzyć te pliki, można przeczytać pod linkami tutaj i tutaj.
Gdy plik items.JSON i wszystkie pliki w folderze są gotowe, można je spakować do jednego dokumentu. Następnie plik .zip należy przemianować na .osf, a wtedy Twój PLUGIN.osf będzie gotowy do dodania do aplikacji OsmAnd.
Przykłady
Możesz rzucić okiem na niektóre wtyczki, które użytkownicy OsmAnd stworzyli samodzielnie:
- Niestandardowa wtyczka The USA Maps (dane PAD-US, szlaki i drogi USFS, rekreacja USFS).
- Niestandardowa wtyczka Anygis maps.
- Niestandardowa wtyczka Map Legend.
- Polska niestandardowa wtyczka mapy UMP-PL.
- Niestandardowa wtyczka OsmAnd Rendering plugin.
- Niestandardowa wtyczka Outdoor Explorer.