From f6a40887172674a52db404bded63873d0ff1548a Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 21 May 2020 15:43:14 +0300 Subject: [PATCH 001/108] Fix #9016 --- OsmAnd/res/layout/global_preference_toolbar.xml | 9 ++------- .../layout/global_preferences_toolbar_with_switch.xml | 9 ++------- OsmAnd/res/layout/profile_preference_toolbar.xml | 9 ++------- .../layout/profile_preference_toolbar_with_switch.xml | 9 ++------- 4 files changed, 8 insertions(+), 28 deletions(-) diff --git a/OsmAnd/res/layout/global_preference_toolbar.xml b/OsmAnd/res/layout/global_preference_toolbar.xml index dd754224b4..bd31e3240b 100644 --- a/OsmAnd/res/layout/global_preference_toolbar.xml +++ b/OsmAnd/res/layout/global_preference_toolbar.xml @@ -21,14 +21,9 @@ diff --git a/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml b/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml index 502dfde3ca..d34c987376 100644 --- a/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml +++ b/OsmAnd/res/layout/profile_preference_toolbar_with_switch.xml @@ -27,14 +27,9 @@ From b0713af648b1a979a442214111c63228704f66f5 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Thu, 21 May 2020 18:42:06 +0300 Subject: [PATCH 002/108] Fix #9017 --- .../res/layout/point_editor_fragment_new.xml | 23 +++++++++---------- 1 file changed, 11 insertions(+), 12 deletions(-) diff --git a/OsmAnd/res/layout/point_editor_fragment_new.xml b/OsmAnd/res/layout/point_editor_fragment_new.xml index 53b1578816..0b2ca56e50 100644 --- a/OsmAnd/res/layout/point_editor_fragment_new.xml +++ b/OsmAnd/res/layout/point_editor_fragment_new.xml @@ -18,27 +18,26 @@ - + android:layout_marginStart="@dimen/list_item_button_padding" + android:layout_marginLeft="@dimen/list_item_button_padding" + android:layout_marginEnd="@dimen/list_item_button_padding" + android:layout_marginRight="@dimen/list_item_button_padding" + android:contentDescription="@string/access_shared_string_navigate_up" + app:srcCompat="@drawable/ic_action_replace" /> From 1d4783e862f18723d29897abdecff6332f6c6ed7 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 22 May 2020 10:14:30 +0300 Subject: [PATCH 003/108] Fix tablet sizes --- .../first_splash_screen_free.xml | 2 +- .../first_splash_screen_free_dev.xml | 2 +- .../first_splash_screen_plus.xml | 2 +- OsmAnd/res/layout/fragment_subcategories.xml | 2 +- OsmAnd/res/layout/mode_view.xml | 4 ++-- .../layout/mode_view_route_preparation.xml | 4 ++-- OsmAnd/res/layout/search_custom_poi.xml | 2 +- OsmAnd/res/values-land/sizes.xml | 4 +--- OsmAnd/res/values-large/sizes.xml | 4 ---- OsmAnd/res/values-sw600dp-land/sizes.xml | 2 +- OsmAnd/res/values-sw600dp/sizes.xml | 2 +- .../osmand/SecondSplashScreenFragment.java | 24 +++++++------------ .../MapContextMenuFragment.java | 2 +- 13 files changed, 21 insertions(+), 35 deletions(-) diff --git a/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free.xml b/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free.xml index b3d6f99388..ed3f0e5956 100644 --- a/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free.xml +++ b/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free.xml @@ -4,7 +4,7 @@ \ No newline at end of file diff --git a/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free_dev.xml b/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free_dev.xml index b3d6f99388..ed3f0e5956 100644 --- a/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free_dev.xml +++ b/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_free_dev.xml @@ -4,7 +4,7 @@ \ No newline at end of file diff --git a/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_plus.xml b/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_plus.xml index 1dc65ed611..4c95aa687e 100644 --- a/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_plus.xml +++ b/OsmAnd/res/drawable-sw600dp-v21/first_splash_screen_plus.xml @@ -4,7 +4,7 @@ \ No newline at end of file diff --git a/OsmAnd/res/layout/fragment_subcategories.xml b/OsmAnd/res/layout/fragment_subcategories.xml index 26b3f33ef4..aa3b449c0c 100644 --- a/OsmAnd/res/layout/fragment_subcategories.xml +++ b/OsmAnd/res/layout/fragment_subcategories.xml @@ -17,7 +17,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?attr/actionModeBackground" - android:minHeight="@dimen/dashboard_map_toolbar" + android:minHeight="@dimen/toolbar_height" android:theme="?attr/toolbar_theme" app:contentInsetLeft="54dp" app:contentInsetStart="54dp"> diff --git a/OsmAnd/res/layout/mode_view.xml b/OsmAnd/res/layout/mode_view.xml index f21a90246e..689d3db45a 100644 --- a/OsmAnd/res/layout/mode_view.xml +++ b/OsmAnd/res/layout/mode_view.xml @@ -6,8 +6,8 @@ diff --git a/OsmAnd/res/layout/mode_view_route_preparation.xml b/OsmAnd/res/layout/mode_view_route_preparation.xml index 14ca12a135..9b5883b264 100644 --- a/OsmAnd/res/layout/mode_view_route_preparation.xml +++ b/OsmAnd/res/layout/mode_view_route_preparation.xml @@ -6,8 +6,8 @@ diff --git a/OsmAnd/res/layout/search_custom_poi.xml b/OsmAnd/res/layout/search_custom_poi.xml index 111fa6c3d5..7023b905ce 100644 --- a/OsmAnd/res/layout/search_custom_poi.xml +++ b/OsmAnd/res/layout/search_custom_poi.xml @@ -16,7 +16,7 @@ android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@color/osmand_orange" - android:minHeight="@dimen/dashboard_map_toolbar" + android:minHeight="@dimen/toolbar_height" android:theme="?attr/toolbar_theme" app:contentInsetLeft="54dp" app:contentInsetStart="54dp" diff --git a/OsmAnd/res/values-land/sizes.xml b/OsmAnd/res/values-land/sizes.xml index a927d1e718..3dac1a225d 100644 --- a/OsmAnd/res/values-land/sizes.xml +++ b/OsmAnd/res/values-land/sizes.xml @@ -1,8 +1,6 @@ - 200dp - - 12dp + 22dp 12dp 12dp diff --git a/OsmAnd/res/values-large/sizes.xml b/OsmAnd/res/values-large/sizes.xml index 00e5606654..2773ca50f3 100644 --- a/OsmAnd/res/values-large/sizes.xml +++ b/OsmAnd/res/values-large/sizes.xml @@ -69,7 +69,6 @@ 11dp 9dp 5dp - 54dp 90dp 18dp @@ -101,12 +100,9 @@ 21dp 72dp 18dp - 72dp 18dp 48dp 60dp - 90dp - 84dp 78dp 27dp 27dp diff --git a/OsmAnd/res/values-sw600dp-land/sizes.xml b/OsmAnd/res/values-sw600dp-land/sizes.xml index fcb6e1f8c5..90baa4ed8e 100644 --- a/OsmAnd/res/values-sw600dp-land/sizes.xml +++ b/OsmAnd/res/values-sw600dp-land/sizes.xml @@ -1,6 +1,6 @@ - 120dp + -48dp 12dp 24dp diff --git a/OsmAnd/res/values-sw600dp/sizes.xml b/OsmAnd/res/values-sw600dp/sizes.xml index cd419b6f73..8008a2e0d0 100644 --- a/OsmAnd/res/values-sw600dp/sizes.xml +++ b/OsmAnd/res/values-sw600dp/sizes.xml @@ -1,6 +1,6 @@ - 240dp + -48dp 36dp 24dp diff --git a/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java b/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java index 9853e77390..147c4b80cc 100644 --- a/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java +++ b/OsmAnd/src/net/osmand/SecondSplashScreenFragment.java @@ -10,6 +10,7 @@ import android.view.ViewGroup; import android.widget.ImageView; import android.widget.RelativeLayout; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.content.res.AppCompatResources; import androidx.fragment.app.FragmentActivity; @@ -36,15 +37,6 @@ public class SecondSplashScreenFragment extends BaseOsmAndFragment { return (MapActivity) getActivity(); } - private boolean hasNavBar() { - int id = getResources().getIdentifier("config_showNavigationBar", "bool", "android"); - if (id > 0) { - return getResources().getBoolean(id); - } else { - return false; - } - } - private int getStatusBarHeight() { int statusBarHeight = 0; int resourceId = getResources().getIdentifier("status_bar_height", "dimen", "android"); @@ -55,7 +47,7 @@ public class SecondSplashScreenFragment extends BaseOsmAndFragment { } private int getNavigationBarHeight() { - if (!hasNavBar()) + if (!AndroidUtils.hasNavBar(getContext()) && !AndroidUtils.isNavBarVisible(getMapActivity())) return 0; int orientation = getResources().getConfiguration().orientation; if (isSmartphone() && Configuration.ORIENTATION_LANDSCAPE == orientation) @@ -67,7 +59,7 @@ public class SecondSplashScreenFragment extends BaseOsmAndFragment { } private int getNavigationBarWidth() { - if (!hasNavBar()) + if (!AndroidUtils.hasNavBar(getContext()) && !AndroidUtils.isNavBarVisible(getMapActivity())) return 0; int orientation = getResources().getConfiguration().orientation; if (orientation == Configuration.ORIENTATION_LANDSCAPE && isSmartphone()) { @@ -80,7 +72,7 @@ public class SecondSplashScreenFragment extends BaseOsmAndFragment { @Nullable @Override - public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { OsmandApplication app = requireMyApplication(); FragmentActivity activity = requireActivity(); @@ -130,11 +122,11 @@ public class SecondSplashScreenFragment extends BaseOsmAndFragment { RelativeLayout.LayoutParams osmTextLayoutParams = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); osmTextLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); osmTextLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL); - - int defaultLogoMarginTop = (int) getResources().getDimension(R.dimen.splash_screen_logo_top); + + int defaultLogoMarginTop = getResources().getDimensionPixelSize(R.dimen.splash_screen_logo_top); int logoMarginTop = defaultLogoMarginTop - (Build.VERSION.SDK_INT >= 21 ? 0 : getStatusBarHeight()); - int textMarginBottom = (int) getResources().getDimension(R.dimen.splash_screen_text_bottom); - int osmTextMarginBottom = (int) getResources().getDimension(R.dimen.splash_screen_osm_text_bottom); + int textMarginBottom = getResources().getDimensionPixelSize(R.dimen.splash_screen_text_bottom); + int osmTextMarginBottom = getResources().getDimensionPixelSize(R.dimen.splash_screen_osm_text_bottom); int elementsPaddingLeft = 0; int elementsPaddingRight = 0; if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.N_MR1) { diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 7c8d5b6553..31ef529274 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -1314,7 +1314,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo final ImageView iconView = (ImageView) view.findViewById(R.id.context_menu_icon_view); Drawable icon = menu.getRightIcon(); int iconId = menu.getRightIconId(); - int sizeId = menu.isBigRightIcon() ? R.dimen.context_menu_big_icon_size : R.dimen.map_widget_icon; + int sizeId = menu.isBigRightIcon() ? R.dimen.context_menu_big_icon_size : R.dimen.standard_icon_size; if (menu.getPointDescription().isFavorite() || menu.getPointDescription().isWpt()) { sizeId = R.dimen.favorites_icon_size; } From f2dc4cdc4d63dbb3da936d2d1d28384544e4d4ed Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 22 May 2020 14:29:11 +0300 Subject: [PATCH 004/108] Check activity state before showing dialog --- .../osmand/plus/dialogs/ConfigureMapMenu.java | 27 +++++++++++++++---- 1 file changed, 22 insertions(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 4c3378c77e..0ab07cc75b 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -37,9 +37,6 @@ import net.osmand.plus.DialogListItemAdapter; import net.osmand.plus.GpxSelectionHelper; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference; -import net.osmand.plus.settings.backend.OsmandSettings.ListStringPreference; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; @@ -51,6 +48,9 @@ import net.osmand.plus.inapp.InAppPurchaseHelper; import net.osmand.plus.poi.PoiFiltersHelper; import net.osmand.plus.rastermaps.OsmandRasterMapsPlugin; import net.osmand.plus.render.RendererRegistry; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference; +import net.osmand.plus.settings.backend.OsmandSettings.ListStringPreference; import net.osmand.plus.srtmplugin.SRTMPlugin; import net.osmand.plus.transport.TransportLinesMenu; import net.osmand.plus.views.OsmandMapTileView; @@ -529,6 +529,9 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return false; + } final OsmandMapTileView view = activity.getMapView(); AlertDialog.Builder bld = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes)); bld.setTitle(R.string.daynight); @@ -570,6 +573,9 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return false; + } final OsmandMapTileView view = activity.getMapView(); final OsmandSettings.OsmandPreference mapDensity = view.getSettings().MAP_DENSITY; AlertDialog.Builder bld = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes)); @@ -638,6 +644,9 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return false; + } final OsmandMapTileView view = activity.getMapView(); AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes)); // test old descr as title @@ -682,6 +691,9 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter ad, int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return false; + } final OsmandMapTileView view = activity.getMapView(); AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes)); @@ -991,7 +1003,9 @@ public class ConfigureMapMenu { final int themeRes, final boolean nightMode, @ColorInt final int selectedProfileColor) { - + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return; + } AlertDialog.Builder bld = new AlertDialog.Builder(new ContextThemeWrapper(activity, themeRes)); boolean[] checkedItems = new boolean[prefs.size()]; final boolean[] tempPrefs = new boolean[prefs.size()]; @@ -1245,7 +1259,10 @@ public class ConfigureMapMenu { @Override public boolean onContextMenuClick(final ArrayAdapter ad, - final int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { + final int itemId, final int pos, boolean isChecked, int[] viewCoordinates) { + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return false; + } AlertDialog.Builder b = new AlertDialog.Builder(new ContextThemeWrapper(view.getContext(), themeRes)); // test old descr as title b.setTitle(propertyDescr); From 8a63a0ce53651ed05cb7bed0258006a9ece35a81 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 22 May 2020 14:50:14 +0300 Subject: [PATCH 005/108] Fix dashboard back button --- OsmAnd/res/layout/dashboard_toolbar.xml | 22 ++++++++++--------- .../osmand/plus/dashboard/DashboardOnMap.java | 7 +++--- 2 files changed, 16 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/layout/dashboard_toolbar.xml b/OsmAnd/res/layout/dashboard_toolbar.xml index 24cff7957f..361dfc190f 100644 --- a/OsmAnd/res/layout/dashboard_toolbar.xml +++ b/OsmAnd/res/layout/dashboard_toolbar.xml @@ -7,8 +7,8 @@ android:layout_width="fill_parent" android:layout_height="@dimen/dashboard_map_toolbar" android:background="@color/app_bar_color_light" - app:contentInsetLeft="4dp" - app:contentInsetStart="4dp" + app:contentInsetLeft="0dp" + app:contentInsetStart="0dp" app:contentInsetRight="0dp" app:contentInsetEnd="0dp"> @@ -25,17 +25,18 @@ android:gravity="start" android:orientation="horizontal"> - + tools:visibility="visible" /> Date: Fri, 22 May 2020 15:01:42 +0300 Subject: [PATCH 006/108] Fix possible npe --- OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index 55adfc9eaf..843a9576b7 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -393,7 +393,7 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight()); contextMarker.draw(canvas); } - if (this.nightMode != nightMode) { + if (this.nightMode != nightMode && currentWidgetState != null) { this.nightMode = nightMode; updateQuickActionButton(currentWidgetState); } From 88a6d620803e19538e39cf24023c3c941a8dc307 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Fri, 22 May 2020 14:57:55 +0200 Subject: [PATCH 007/108] Fix map poi types --- .../main/java/net/osmand/osm/MapPoiTypes.java | 35 ++++++++++++------- 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index 330a21c156..4199abee89 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -29,6 +29,7 @@ import java.util.TreeSet; public class MapPoiTypes { + private static final String OTHER_MAP_CATEGORY = "Other"; private static MapPoiTypes DEFAULT_INSTANCE = null; private static final Log log = PlatformUtil.getLog(MapRenderingTypes.class); private String resourceName; @@ -96,7 +97,7 @@ public class MapPoiTypes { public PoiCategory getOtherMapCategory() { if (otherMapCategory == null) { - otherMapCategory = getPoiCategoryByName("Other", true); + otherMapCategory = getPoiCategoryByName(OTHER_MAP_CATEGORY, true); } return otherMapCategory; } @@ -111,7 +112,8 @@ public class MapPoiTypes { public List getTopVisibleFilters() { List lf = new ArrayList(); - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); if (pc.isTopVisible()) { lf.add(pc); } @@ -131,7 +133,8 @@ public class MapPoiTypes { } public PoiCategory getOsmwiki() { - for (PoiCategory category : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory category = categories.get(i); if (category.isWiki()) { return category; } @@ -167,7 +170,8 @@ public class MapPoiTypes { } public PoiType getPoiTypeByKey(String name) { - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); PoiType pt = pc.getPoiTypeByKeyName(name); if (pt != null && !pt.isReference()) { return pt; @@ -184,7 +188,8 @@ public class MapPoiTypes { } public AbstractPoiType getAnyPoiTypeByKey(String name) { - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); if (pc.getKeyName().equals(name)) { return pc; } @@ -203,7 +208,8 @@ public class MapPoiTypes { public Map getAllTranslatedNames(boolean skipNonEditable) { Map translation = new HashMap(); - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); if (skipNonEditable && pc.isNotEditableOsm()) { continue; } @@ -231,7 +237,8 @@ public class MapPoiTypes { public List getAllTypesTranslatedNames(StringMatcher matcher) { List tm = new ArrayList(); - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); if (pc == otherMapCategory) { continue; } @@ -294,7 +301,7 @@ public class MapPoiTypes { } if (create) { PoiCategory lastCategory = new PoiCategory(this, name, categories.size()); - if (!lastCategory.getKeyName().equals("Other")) { + if (!lastCategory.getKeyName().equals(OTHER_MAP_CATEGORY)) { lastCategory.setTopVisible(true); } addCategory(lastCategory); @@ -365,6 +372,8 @@ public class MapPoiTypes { PoiType lastType = null; Set lastTypePoiAdditionalsCategories = new TreeSet(); String lastPoiAdditionalCategory = null; + PoiCategory localOtherMapCategory = new PoiCategory(this, OTHER_MAP_CATEGORY, categoriesList.size()); + categoriesList.add(localOtherMapCategory); while ((tok = parser.next()) != XmlPullParser.END_DOCUMENT) { if (tok == XmlPullParser.START_TAG) { String name = parser.getName(); @@ -404,7 +413,7 @@ public class MapPoiTypes { lastCategory.addPoiType(tp); } else if (name.equals("poi_additional")) { if (lastCategory == null) { - lastCategory = getOtherMapCategory(); + lastCategory = localOtherMapCategory; } PoiType baseType = parsePoiAdditional(parser, lastCategory, lastFilter, lastType, null, null, lastPoiAdditionalCategory); if ("true".equals(parser.getAttributeValue("", "lang"))) { @@ -433,7 +442,7 @@ public class MapPoiTypes { } else if (name.equals("poi_type")) { if (lastCategory == null) { - lastCategory = getOtherMapCategory(); + lastCategory = localOtherMapCategory; } if(!Algorithms.isEmpty(parser.getAttributeValue("", "deprecated_of"))){ String vl = parser.getAttributeValue("", "name"); @@ -705,7 +714,8 @@ public class MapPoiTypes { public AbstractPoiType getAnyPoiAdditionalTypeByKey(String name) { PoiType add = null; - for (PoiCategory pc : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory pc = categories.get(i); add = getPoiAdditionalByKey(pc, name); if (add != null) { return add; @@ -811,7 +821,8 @@ public class MapPoiTypes { if (!poiTypesByTag.isEmpty()) { return; } - for (PoiCategory poic : categories) { + for (int i = 0; i < categories.size(); i++) { + PoiCategory poic = categories.get(i); for (PoiType p : poic.getPoiTypes()) { initPoiType(p); for (PoiType pts : p.getPoiAdditionals()) { From 82c8349b3fceb87cc02711cfd5ad4af1371dae24 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 22 May 2020 15:58:08 +0300 Subject: [PATCH 008/108] Fix possible npe and concurrent exception --- OsmAnd/src/net/osmand/plus/MapMarkersHelper.java | 6 ++---- .../osmand/plus/activities/ContributionVersionActivity.java | 2 +- OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java | 4 ++-- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java index da3d5c8fce..556d7ad57b 100644 --- a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java +++ b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java @@ -1161,12 +1161,10 @@ public class MapMarkersHelper { removeGroupActiveMarkers(group, true); return; } - - for (FavouritePoint fp : favGroup.getPoints()) { + List favPoints = new ArrayList<>(favGroup.getPoints()); + for (FavouritePoint fp : favPoints) { addNewMarkerIfNeeded(group, groupMarkers, new LatLon(fp.getLatitude(), fp.getLongitude()), fp.getName(), fp, null); } - - } else if (group.getType() == MapMarkersGroup.GPX_TYPE) { GpxSelectionHelper gpxHelper = ctx.getSelectedGpxHelper(); File file = new File(group.getId()); diff --git a/OsmAnd/src/net/osmand/plus/activities/ContributionVersionActivity.java b/OsmAnd/src/net/osmand/plus/activities/ContributionVersionActivity.java index f1d28dfa2b..916f64fc59 100644 --- a/OsmAnd/src/net/osmand/plus/activities/ContributionVersionActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/ContributionVersionActivity.java @@ -132,7 +132,7 @@ public class ContributionVersionActivity extends OsmandListActivity { @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); - if(ACTIVITY_TO_INSTALL == requestCode && resultCode != RESULT_OK){ + if (ACTIVITY_TO_INSTALL == requestCode && resultCode != RESULT_OK && currentInstalledDate != null) { updateInstalledApp(false, currentInstalledDate); } } diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index 843a9576b7..33344bcf3a 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -393,9 +393,9 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe canvas.translate(box.getCenterPixelX() - contextMarker.getWidth() / 2, box.getCenterPixelY() - contextMarker.getHeight()); contextMarker.draw(canvas); } - if (this.nightMode != nightMode && currentWidgetState != null) { + if (this.nightMode != nightMode) { this.nightMode = nightMode; - updateQuickActionButton(currentWidgetState); + updateQuickActionButton(currentWidgetState != null && currentWidgetState); } setupQuickActionBtnVisibility(); } From a03bad42f7a25abc516a2e4406643ec65a94fe81 Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Fri, 22 May 2020 16:03:36 +0300 Subject: [PATCH 009/108] Remove unnecessary changes --- OsmAnd/src/net/osmand/plus/MapMarkersHelper.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java index 556d7ad57b..322c19e8e4 100644 --- a/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java +++ b/OsmAnd/src/net/osmand/plus/MapMarkersHelper.java @@ -1161,10 +1161,11 @@ public class MapMarkersHelper { removeGroupActiveMarkers(group, true); return; } - List favPoints = new ArrayList<>(favGroup.getPoints()); - for (FavouritePoint fp : favPoints) { + for (FavouritePoint fp : favGroup.getPoints()) { addNewMarkerIfNeeded(group, groupMarkers, new LatLon(fp.getLatitude(), fp.getLongitude()), fp.getName(), fp, null); } + + } else if (group.getType() == MapMarkersGroup.GPX_TYPE) { GpxSelectionHelper gpxHelper = ctx.getSelectedGpxHelper(); File file = new File(group.getId()); From 1b75a6bd5274ff0c21d436c476138934875140a3 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 22 May 2020 16:11:50 +0300 Subject: [PATCH 010/108] Fix tablet sizes --- .../net/osmand/plus/views/MapControlsLayer.java | 14 +++++--------- 1 file changed, 5 insertions(+), 9 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index 153159c44a..b79f36ab57 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -298,9 +298,7 @@ public class MapControlsLayer extends OsmandMapLayer { }); View search = mapActivity.findViewById(R.id.map_search_button); - quickSearchHud = createHudButton(search, R.drawable.map_search_dark, QUICK_SEARCH_HUD_ID) - .setIconsId(R.drawable.map_search_dark, R.drawable.map_search_night) - .setIconColorId(0) + quickSearchHud = createHudButton(search, R.drawable.ic_action_search_dark, QUICK_SEARCH_HUD_ID) .setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night); controls.add(quickSearchHud); search.setOnClickListener(new View.OnClickListener() { @@ -375,7 +373,7 @@ public class MapControlsLayer extends OsmandMapLayer { final boolean dash = settings.SHOW_DASHBOARD_ON_MAP_SCREEN.get(); menuControl = createHudButton(backToMenuButton, - !dash ? R.drawable.map_drawer : R.drawable.map_dashboard, MENU_HUD_ID).setBg( + !dash ? R.drawable.ic_navigation_drawer : R.drawable.ic_dashboard_dark, MENU_HUD_ID).setBg( R.drawable.btn_round, R.drawable.btn_round_night); controls.add(menuControl); backToMenuButton.setOnClickListener(new View.OnClickListener() { @@ -392,7 +390,7 @@ public class MapControlsLayer extends OsmandMapLayer { zoomText = (TextView) mapActivity.findViewById(R.id.map_app_mode_text); View routePlanButton = mapActivity.findViewById(R.id.map_route_info_button); - routePlanningBtn = createHudButton(routePlanButton, R.drawable.map_directions, ROUTE_PLANNING_HUD_ID).setBg( + routePlanningBtn = createHudButton(routePlanButton, R.drawable.ic_action_gdirections_dark, ROUTE_PLANNING_HUD_ID).setBg( R.drawable.btn_round, R.drawable.btn_round_night); controls.add(routePlanningBtn); routePlanButton.setOnClickListener(new View.OnClickListener() { @@ -586,8 +584,7 @@ public class MapControlsLayer extends OsmandMapLayer { private void initZooms() { final OsmandMapTileView view = mapActivity.getMapView(); View zoomInButton = mapActivity.findViewById(R.id.map_zoom_in_button); - mapZoomIn = createHudButton(zoomInButton, R.drawable.map_zoom_in, ZOOM_IN_HUD_ID). - setIconsId(R.drawable.map_zoom_in, R.drawable.map_zoom_in_night).setRoundTransparent(); + mapZoomIn = createHudButton(zoomInButton, R.drawable.map_zoom_in, ZOOM_IN_HUD_ID).setRoundTransparent(); controls.add(mapZoomIn); zoomInButton.setOnClickListener(new View.OnClickListener() { @Override @@ -606,8 +603,7 @@ public class MapControlsLayer extends OsmandMapLayer { final View.OnLongClickListener listener = MapControlsLayer.getOnClickMagnifierListener(view); zoomInButton.setOnLongClickListener(listener); View zoomOutButton = mapActivity.findViewById(R.id.map_zoom_out_button); - mapZoomOut = createHudButton(zoomOutButton, R.drawable.map_zoom_out, ZOOM_OUT_HUD_ID). - setIconsId(R.drawable.map_zoom_out, R.drawable.map_zoom_out_night).setRoundTransparent(); + mapZoomOut = createHudButton(zoomOutButton, R.drawable.map_zoom_out, ZOOM_OUT_HUD_ID).setRoundTransparent(); controls.add(mapZoomOut); zoomOutButton.setOnClickListener(new View.OnClickListener() { @Override From e41a71d74da341634572f557f7c9da4f495a7736 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Fri, 22 May 2020 20:02:06 +0300 Subject: [PATCH 011/108] Fix tablet context menu --- OsmAnd/res/layout/map_context_menu_button.xml | 8 ++++---- OsmAnd/res/values-large/sizes.xml | 2 -- OsmAnd/res/values/sizes.xml | 1 - .../plus/mapcontextmenu/MapContextMenuFragment.java | 12 ++++++------ 4 files changed, 10 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/layout/map_context_menu_button.xml b/OsmAnd/res/layout/map_context_menu_button.xml index 4062300fd0..8e5920ac84 100644 --- a/OsmAnd/res/layout/map_context_menu_button.xml +++ b/OsmAnd/res/layout/map_context_menu_button.xml @@ -21,15 +21,15 @@ android:layout_height="match_parent" android:background="@null" android:gravity="center_vertical" - android:paddingLeft="@dimen/context_menu_button_padding_x" - android:paddingRight="@dimen/context_menu_button_padding_x" + android:paddingLeft="@dimen/content_padding_half" + android:paddingRight="@dimen/content_padding_half" android:textAllCaps="true" android:textSize="@dimen/default_desc_text_size" osmand:typeface="@string/font_roboto_medium" android:duplicateParentState="true" tools:text="Button" - android:paddingStart="@dimen/context_menu_button_padding_x" - android:paddingEnd="@dimen/context_menu_button_padding_x" /> + android:paddingStart="@dimen/content_padding_half" + android:paddingEnd="@dimen/content_padding_half" /> diff --git a/OsmAnd/res/values-large/sizes.xml b/OsmAnd/res/values-large/sizes.xml index 2773ca50f3..70b9e5eb7e 100644 --- a/OsmAnd/res/values-large/sizes.xml +++ b/OsmAnd/res/values-large/sizes.xml @@ -51,13 +51,11 @@ 24dp 6dp 114dp - 15dp -24dp 80dp 66dp 36dp 30dp - 24dp 15dp 9dp 23dp diff --git a/OsmAnd/res/values/sizes.xml b/OsmAnd/res/values/sizes.xml index 6383e285c7..cd33774ac5 100644 --- a/OsmAnd/res/values/sizes.xml +++ b/OsmAnd/res/values/sizes.xml @@ -164,7 +164,6 @@ 16dp 4dp 76dp - 10dp -16dp 4dp 54dp diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 31ef529274..8559982176 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -1150,7 +1150,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo Drawable leftIcon = leftTitleButtonController.getLeftIcon(); Drawable rightIcon = leftTitleButtonController.getRightIcon(); leftTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null); - leftTitleButton.setCompoundDrawablePadding(dpToPx(8f)); + leftTitleButton.setCompoundDrawablePadding(view.getResources().getDimensionPixelSize(R.dimen.content_padding_half)); ((LinearLayout) leftTitleButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START); } else { leftTitleButtonView.setVisibility(View.INVISIBLE); @@ -1169,7 +1169,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo Drawable leftIcon = rightTitleButtonController.getLeftIcon(); Drawable rightIcon = rightTitleButtonController.getRightIcon(); rightTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null); - rightTitleButton.setCompoundDrawablePadding(dpToPx(8f)); + rightTitleButton.setCompoundDrawablePadding(view.getResources().getDimensionPixelSize(R.dimen.content_padding_half)); ((LinearLayout) rightTitleButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START); } else { rightTitleButtonView.setVisibility(View.INVISIBLE); @@ -1185,7 +1185,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo Drawable leftIcon = bottomTitleButtonController.getLeftIcon(); Drawable rightIcon = bottomTitleButtonController.getRightIcon(); bottomTitleButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null); - bottomTitleButton.setCompoundDrawablePadding(dpToPx(8f)); + bottomTitleButton.setCompoundDrawablePadding(view.getResources().getDimensionPixelSize(R.dimen.content_padding_half)); ((LinearLayout) bottomTitleButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START); } else { bottomTitleButtonView.setVisibility(View.GONE); @@ -1209,7 +1209,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo Drawable leftIcon = leftDownloadButtonController.getLeftIcon(); Drawable rightIcon = leftDownloadButtonController.getRightIcon(); leftDownloadButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null); - leftDownloadButton.setCompoundDrawablePadding(dpToPx(8f)); + leftDownloadButton.setCompoundDrawablePadding(view.getResources().getDimensionPixelSize(R.dimen.content_padding_half)); ((LinearLayout) leftDownloadButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START); } else { leftDownloadButtonView.setVisibility(View.INVISIBLE); @@ -1225,7 +1225,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo Drawable leftIcon = rightDownloadButtonController.getLeftIcon(); Drawable rightIcon = rightDownloadButtonController.getRightIcon(); rightDownloadButton.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null); - rightDownloadButton.setCompoundDrawablePadding(dpToPx(8f)); + rightDownloadButton.setCompoundDrawablePadding(view.getResources().getDimensionPixelSize(R.dimen.content_padding_half)); ((LinearLayout) rightDownloadButtonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START); } else { rightDownloadButtonView.setVisibility(View.INVISIBLE); @@ -1295,7 +1295,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo Drawable leftIcon = buttonController.getLeftIcon(); Drawable rightIcon = buttonController.getRightIcon(); buttonText.setCompoundDrawablesWithIntrinsicBounds(leftIcon, null, rightIcon, null); - buttonText.setCompoundDrawablePadding(dpToPx(8f)); + buttonText.setCompoundDrawablePadding(view.getResources().getDimensionPixelSize(R.dimen.content_padding_half)); ((LinearLayout) buttonView).setGravity(rightIcon != null ? Gravity.END : Gravity.START); buttonView.setOnClickListener(new View.OnClickListener() { @Override From 61fe550b52adda8333dbbb069b406689ebd40eee Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sat, 23 May 2020 10:47:05 +0200 Subject: [PATCH 012/108] Fix concurrent modification exception on start --- .../main/java/net/osmand/osm/MapPoiTypes.java | 40 ++++++++++++------- .../net/osmand/plus/poi/PoiFiltersHelper.java | 4 ++ 2 files changed, 29 insertions(+), 15 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java index 4199abee89..60d835dbec 100644 --- a/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java +++ b/OsmAnd-java/src/main/java/net/osmand/osm/MapPoiTypes.java @@ -360,6 +360,11 @@ public class MapPoiTypes { final Map allTypes = new LinkedHashMap(); final Map> categoryPoiAdditionalMap = new LinkedHashMap>(); final Map> abstractTypeAdditionalCategories = new LinkedHashMap>(); + final Map poiTypesByTag = new LinkedHashMap(); + final Map deprecatedTags = new LinkedHashMap(); + final Map poiAdditionalCategoryIconNames = new LinkedHashMap(); + final List textPoiAdditionals = new ArrayList(); + List categoriesList = new ArrayList<>(); try { XmlPullParser parser = PlatformUtil.newXMLPullParser(); @@ -415,12 +420,15 @@ public class MapPoiTypes { if (lastCategory == null) { lastCategory = localOtherMapCategory; } - PoiType baseType = parsePoiAdditional(parser, lastCategory, lastFilter, lastType, null, null, lastPoiAdditionalCategory); + PoiType baseType = parsePoiAdditional(parser, lastCategory, lastFilter, lastType, null, null, + lastPoiAdditionalCategory, textPoiAdditionals); if ("true".equals(parser.getAttributeValue("", "lang"))) { for (String lng : MapRenderingTypes.langs) { - parsePoiAdditional(parser, lastCategory, lastFilter, lastType, lng, baseType, lastPoiAdditionalCategory); + parsePoiAdditional(parser, lastCategory, lastFilter, lastType, lng, baseType, + lastPoiAdditionalCategory, textPoiAdditionals); } - parsePoiAdditional(parser, lastCategory, lastFilter, lastType, "en", baseType, lastPoiAdditionalCategory); + parsePoiAdditional(parser, lastCategory, lastFilter, lastType, "en", baseType, + lastPoiAdditionalCategory, textPoiAdditionals); } if (lastPoiAdditionalCategory != null) { List categoryAdditionals = categoryPoiAdditionalMap.get(lastPoiAdditionalCategory); @@ -491,7 +499,7 @@ public class MapPoiTypes { } } } - categories = categoriesList; + is.close(); } catch (IOException e) { log.error("Unexpected error", e); //$NON-NLS-1$ @@ -519,17 +527,25 @@ public class MapPoiTypes { List poiAdditionals = categoryPoiAdditionalMap.get(category); if (poiAdditionals != null) { for (PoiType poiType : poiAdditionals) { - buildPoiAdditionalReference(poiType, entry.getKey()); + buildPoiAdditionalReference(poiType, entry.getKey(), textPoiAdditionals); } } } } - findDefaultOtherCategory(); + this.categories = categoriesList; + this.poiTypesByTag = poiTypesByTag; + this.deprecatedTags = deprecatedTags; + this.poiAdditionalCategoryIconNames = poiAdditionalCategoryIconNames; + this.textPoiAdditionals = textPoiAdditionals; + otherCategory = getPoiCategoryByName("user_defined_other"); + if (otherCategory == null) { + throw new IllegalArgumentException("No poi category other"); + } init = true; log.info("Time to init poi types " + (System.currentTimeMillis() - time)); //$NON-NLS-1$ } - private PoiType buildPoiAdditionalReference(PoiType poiAdditional, AbstractPoiType parent) { + private PoiType buildPoiAdditionalReference(PoiType poiAdditional, AbstractPoiType parent, List textPoiAdditionals) { PoiCategory lastCategory = null; PoiFilter lastFilter = null; PoiType lastType = null; @@ -580,7 +596,8 @@ public class MapPoiTypes { } private PoiType parsePoiAdditional(XmlPullParser parser, PoiCategory lastCategory, PoiFilter lastFilter, - PoiType lastType, String lang, PoiType langBaseType, String poiAdditionalCategory) { + PoiType lastType, String lang, PoiType langBaseType, + String poiAdditionalCategory, List textPoiAdditionals) { String oname = parser.getAttributeValue("", "name"); if (lang != null) { oname += ":" + lang; @@ -662,13 +679,6 @@ public class MapPoiTypes { return tp; } - private void findDefaultOtherCategory() { - PoiCategory pc = getPoiCategoryByName("user_defined_other"); - if (pc == null) { - throw new IllegalArgumentException("No poi category other"); - } - otherCategory = pc; - } public List getCategories(boolean includeMapCategory) { ArrayList lst = new ArrayList(categories); diff --git a/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java b/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java index 0037c5634b..d24109f6f2 100644 --- a/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java +++ b/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java @@ -617,6 +617,10 @@ public class PoiFiltersHelper { } public void loadSelectedPoiFilters() { + // don't deal with not loaded poi types + if(!application.getPoiTypes().isInit()) { + return; + } selectedPoiFilters.clear(); OsmandSettings settings = application.getSettings(); Set filters = settings.getSelectedPoiFilters(); From 92cdc61477d3f96819aa806e2064cd46eb7f4881 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sat, 23 May 2020 11:42:39 +0200 Subject: [PATCH 013/108] Fix no ctx exception --- OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java index a73e8a812f..8050da14d9 100644 --- a/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapmarkers/PlanRouteFragment.java @@ -525,7 +525,7 @@ public class PlanRouteFragment extends BaseOsmAndFragment implements OsmAndLocat if (loc != null) { end = TargetPoint.createStartPoint(new LatLon(loc.getLatitude(), loc.getLongitude()), new PointDescription(PointDescription.POINT_TYPE_MY_LOCATION, - getString(R.string.shared_string_my_location))); + mapActivity.getString(R.string.shared_string_my_location))); } } if (end != null) { From f6c14e659bdda4b16c33ea001289d669e7677ac6 Mon Sep 17 00:00:00 2001 From: Robin Townsend Date: Sat, 23 May 2020 11:46:13 -0400 Subject: [PATCH 014/108] fix some awkward strings --- OsmAnd/res/values/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 8308881ea1..d2bb89400e 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -959,7 +959,7 @@ Actions Marker Create or modify OSM objects - Create or modify OSM POIs, open or comment OSM notes, and contribute recorded GPX files. + Create or modify OSM POIs, open or comment on OSM notes, and contribute recorded GPX files. Deleted Edited Added @@ -967,7 +967,7 @@ Tap a marker on the map to move it to the top of the active markers without opening the context menu. \'One tap\' active Make notes! - Add audio, video or photo note to every point on the map, using widget or context menu. + Add audio, video, or photo notes to any point on the map by using the widgets or context menus. A/V notes by date By date By type @@ -990,7 +990,7 @@ Show directional line from your position to the active marker locations. Show one or two arrows indicating the direction to the active markers. Choose how to display the distance to active markers. - Specify number of direction indicators: + Specify number of direction indicators. Number of decimal digits Right Left @@ -1117,7 +1117,7 @@ Open Mapillary Install Improve photo coverage with Mapillary - Install Mapillary to add one or more photos to this map location. + Install Mapillary to add photos to this map location. Online photos Add photos No photos here. @@ -3681,9 +3681,9 @@ Waypoint 1 Route Point 1 Add GPX files - Import GPX files, or record tracks. + Import GPX files or record tracks. Add Favorites - Import Favorites, or add by marking points on the map. + Import Favorites or add them by marking points on the map. Import GPX file File %1$s does not contain waypoints, import it as a track? Move Point From e34cd39761056248a40d81a63aab352493db7773 Mon Sep 17 00:00:00 2001 From: Oliver Date: Sat, 23 May 2020 07:50:04 +0000 Subject: [PATCH 015/108] Translated using Weblate (German) Currently translated at 99.9% (3338 of 3341 strings) --- OsmAnd/res/values-de/strings.xml | 66 ++++++++++++++++---------------- 1 file changed, 34 insertions(+), 32 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index f7fa57bcae..2351cd1369 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -2043,7 +2043,7 @@ Lon %2$s Unbegrenzte Karten-Downloads, -Aktualisierungen und die Wikipedia-Erweiterung. Für %1$s abonnieren Abonnieren - Monatliche Abonnementabrechnung. Jederzeit auf Google Play kündbar. + Das Abonnement wird pro ausgewähltem Zeitraum berechnet. Sie können das Abonnement jederzeit über Google Play kündigen. Spende an die OSM-Gemeinschaft Ein Teil Ihrer Spende erhalten OSM-Mitwirkende. Die Abonnementskosten bleiben gleich. Das Abonnement macht stündliche, tägliche und wöchentliche Updates sowie unbegrenzte Downloads aller Karten weltweit möglich. @@ -3427,7 +3427,7 @@ Lon %2$s Symbol, Farbe und Name Profilliste bearbeiten Ausgewähltes Profil - Durch Tippen auf %1$s werden alle Ihre Änderungen verworfen. + Durch Antippen von %1$s werden alle Ihre Änderungen verworfen. Alle Profil-Einstellungen auf den Ausgangszustand zurücksetzen. Alle Profil-Einstellungen zurücksetzen\? %1$s: %2$s @@ -3483,7 +3483,7 @@ Lon %2$s System-App verwenden Auslöseton der Kamera Durch das Zurücksetzen auf die Standardeinstellung wird die Sortierung auf den Standardzustand nach der Installation zurückgesetzt. - Eingabehilfenmodus ist in Ihrem System deaktiviert. + Der Zugänglichkeitsmodus ist in Ihrem Android ausgeschaltet. Zeitlimit für den Systembildschirm verwenden Standardmäßig deaktiviert. Wenn OsmAnd im Vordergrund läuft, wird der Bildschirm nicht ausgeblendet. \n @@ -3526,7 +3526,7 @@ Lon %2$s Ihre aufgezeichneten Tracks befinden sich in %1$s oder im OsmAnd-Ordner. Bitte geben Sie einen Namen für das Profil an Einstellungen öffnen - Plugin deaktiviert + Plugin aus Dieses Plugin ist eine separate Anwendung, Sie müssen es separat entfernen, wenn Sie nicht mehr vorhaben, es zu verwenden. \n \nDas Plugin verbleibt nach dem Entfernen von OsmAnd auf dem Gerät. @@ -3534,7 +3534,7 @@ Lon %2$s %1$s — %2$s — %3$s Routing Zusätzliche Daten einschließen - Das importierte Profil enthält zusätzliche Daten. Klicken Sie auf \'Importieren\', um nur Profildaten zu importieren, oder wählen Sie zusätzliche Daten zum Importieren aus. + Das importierte Profil enthält zusätzliche Daten. Klicken Sie auf \"Importieren\", um nur Profildaten zu importieren, oder wählen Sie zusätzliche Daten aus. Sie können zusätzliche Daten zum Exportieren zusammen mit dem Profil auswählen. Antarktis Sie finden Ihre noch nicht übertragenen Änderungen oder OSM-Fehler in %1$s. Hochgeladene Punkte werden nicht mehr angezeigt. @@ -3545,7 +3545,7 @@ Lon %2$s Auf direktem Weg Geo-Intent \'%s\' konnte nicht analysiert werden. App-Standard (%s) - Neuberechnung deaktivieren + Keine Neuberechnung Mindestabstand für Neuberechnung der Route Die Route wird neu berechnet, wenn der Abstand zur Route größer ist als der festgelegte Wert Benutzerdefiniertes Profil @@ -3596,7 +3596,7 @@ Lon %2$s Eine Schaltfläche zum Ein- und Ausblenden der Geländeebene auf der Karte. Gelände einblenden Gelände ausblenden - Gelände ein-/ausblenden + Gelände ein- / ausblenden Schummerung Zoomstufen Transparenz @@ -3665,7 +3665,7 @@ Lon %2$s Tschetschenisch Bairisch Baschkirisch - Hauptaktionen enthalten nur 4 Schaltflächen. + Hat nur vier Schaltflächen. Wählen Sie die Sprachen aus, in denen Wikipedia-Artikel auf der Karte erscheinen sollen. Sie können zwischen allen verfügbaren Sprachen wechseln, während Sie den Artikel lesen. Diese Elemente werden aus dem Menü ausgeblendet, aber die entsprechenden Optionen oder Plugins funktionieren weiterhin. Ordnen Sie Elemente aus %1$s neu an oder blenden Sie sie aus. @@ -3674,7 +3674,7 @@ Lon %2$s \nund wenn es abläuft (nach einem Monat, drei Monaten oder einem Jahr) \nverlängert es sich nicht von selbst, wenn es vorher in Ihren Google Play-Einstellungen gekündigt wurde. Suche nach POI-Typen - Kombinieren Sie POI-Typen aus verschiedenen Kategorien. Tippen Sie auf \"Wechseln\", um alle auszuwählen, tippen Sie auf die linke Seite für die Kategorieauswahl. + Kombinieren Sie POI-Typen aus verschiedenen Kategorien. Wenn Sie auf \"Wechseln\" tippen, werden alle ausgewählt, und auf der linken Seite wird die Kategorie ausgewählt. Trenner Schnellaktion Zirkel @@ -3687,24 +3687,24 @@ Lon %2$s Reisen (Wikivoyage und Wikipedia) Abonnement - OsmAnd Live OsmAnd Einkäufe - Der Leitfaden zur Symbolik einer Karte + Der Leitfaden zur Symbolik einer Karte. Navigationsprofile - • Neue Offline-Steigungskarten -\n -\n• Vollständige Anpassung von Favoriten und GPX-Wegpunkten - benutzerdefinierte Farben, Symbole, Formen -\n -\n• Anpassen der Reihenfolge der Elemente im Kontextmenü, Karte konfigurieren, Schublade -\n -\n• Wikipedia als separate Ebene in Karte konfigurieren, nur benötigte Sprachen auswählen -\n -\n• Erstellen Sie Ihre eigenen POI-Filter/Karten mit absoluter Flexibilität -\n -\n• Optionen zur Wiederherstellung von Einstellungen für benutzerdefinierte Profile hinzugefügt -\n -\n• Vollständige GPX-Routen aus der Navigation unterstützen Verkehrsspuren und vollständige Abbiegeanweisungen -\n -\n• Größe der Bedienoberfläche auf Tablets verbessert -\n + • Neue Offline-Steigungskarten +\n +\n• Vollständige Anpassung von Favoriten und GPX-Wegpunkten - benutzerdefinierte Farben, Symbole, Formen +\n +\n• Anpassen der Reihenfolge der Elemente im \"Kontextmenü\", \"Karte konfigurieren\" und \"Schublade\" +\n +\n• Wikipedia als separate Ebene in Karte konfigurieren, nur benötigte Sprachen auswählen +\n +\n• Erstellen Sie Ihre eigenen POI-Filter / Karten mit absoluter Flexibilität +\n +\n• Optionen zur Wiederherstellung von Einstellungen für benutzerdefinierte Profile hinzugefügt +\n +\n• Vollständige GPX-Routen aus der Navigation unterstützen Verkehrsspuren und vollständige Abbiegeanweisungen +\n +\n• Größe der Bedienoberfläche auf Tablets verbessert +\n \n• Fehler mit RTL behoben \n \n @@ -3712,15 +3712,17 @@ Lon %2$s Sie können auf diese Aktionen zugreifen, indem Sie auf die Schaltfläche \"%1$s\" tippen. Öffentliche Verkehrsmittel ausblenden Öffentliche Verkehrsmittel anzeigen - Öffentliche Verkehrsmittel anzeigen/ausblenden - Eine Schaltfläche zum Ein- oder Ausblenden der öffentlichen Verkehrsmittel auf der Karte. - POI erstellen/bearbeiten + Öffentliche Verkehrsmittel anzeigen / ausblenden + Schaltfläche zum Ein- oder Ausblenden der öffentlichen Verkehrsmittel auf der Karte. + POI erstellen / bearbeiten Parkpositionen Favorit hinzufügen / bearbeiten Standard-Reihenfolge der Elemente wiederherstellen Zurück zur Bearbeitung - Durch Antippen der Aktionsschaltfläche können Sie zwischen den ausgewählten Profilen wechseln. + Die Aktionsschaltfläche schaltet zwischen den ausgewählten Profilen um. Profil hinzufügen - Anwendungsprofil ändern - Für diese Aktion ausgewählte Profile nicht gefunden. + App-Profil ändern + Konnte keine solchen Profile finden. + Weltübersichtskarte (detailliert) + Nicht unterstützter Typ \ No newline at end of file From e8372ff905c0686d2ad292f260f82cb4a2010184 Mon Sep 17 00:00:00 2001 From: Hakuchi Date: Sat, 23 May 2020 21:24:03 +0000 Subject: [PATCH 016/108] Translated using Weblate (German) Currently translated at 99.9% (3338 of 3341 strings) --- OsmAnd/res/values-de/strings.xml | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 2351cd1369..1588d72db0 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -379,7 +379,7 @@ Freunde Sehenswertes Andere - "Name " + Name Kategorie Nicht verwendet Laden Sie die Basis-Weltkarte herunter, um einen Überblick über die ganze Welt bei niedrigen Vergrößerungsstufen zu erhalten. @@ -2077,7 +2077,7 @@ Lon %2$s Filter: Mindestgenauigkeit für die Aufzeichnung eines Punktes. Farbschema für Höhenlinien Fortfahren - "Pause " + Pause Aufgezeichnet Keine Daten Strecke @@ -3615,7 +3615,7 @@ Lon %2$s Skitouren Schneemobil Benutzerdefiniertes OsmAnd-Plugin - Farbliche Kennzeichnung von Pisten im Gelände. + Pisten verwendet Farben, um die Geländesteilheit zu visualisieren. Einen anderen Punkt durch diesen ersetzen Die Änderungen wurden auf das \'%1$s\' Profil angewendet. Konnte nicht von \'%1$s\' lesen. @@ -3725,4 +3725,9 @@ Lon %2$s Konnte keine solchen Profile finden. Weltübersichtskarte (detailliert) Nicht unterstützter Typ + Passen Sie die Menge der Elemente in \"Schublade\", \"Karte konfigurieren\" und \"Kontextmenü\" an. +\n +\nSchalten Sie nicht verwendete Plugins aus, um alle ihre Steuerelemente auszublenden. %1$s. + Schubladenelemente, Kontextmenü + Schublade \ No newline at end of file From 7bf7b13c366810e6bd8fe64b574e11763fd1e9ee Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Thu, 21 May 2020 21:01:17 +0000 Subject: [PATCH 017/108] Translated using Weblate (French) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-fr/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 67b2836171..1e16e8d152 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -3706,4 +3706,5 @@ Ajouter un profil Modifier le profil d\'application Carte mondiale générale (plus détaillée) + Type non pris en charge \ No newline at end of file From 91de38560c6e410f96f1e65713fffa5c86701332 Mon Sep 17 00:00:00 2001 From: Hakuchi Date: Sat, 23 May 2020 21:38:24 +0000 Subject: [PATCH 018/108] Translated using Weblate (German) Currently translated at 99.9% (3338 of 3341 strings) --- OsmAnd/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 1588d72db0..6044f488de 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3603,7 +3603,7 @@ Lon %2$s Stellen Sie die minimale und maximale Zoomstufe ein, bei der die Ebene angezeigt wird. Gelände Pisten - Aktivieren Sie diese Option, um die Schatten- oder Hangkarte anzuzeigen. Weitere Informationen zu diesen Kartentypen finden Sie auf unserer Website + Aktivieren Sie diese Option, um die Schatten- oder Hangkarte anzuzeigen. Weitere Informationen zu diesen Kartentypen finden Sie auf unserer Website. Legende Lesen Sie mehr über Pisten in %1$s. Zusätzliche Karten sind erforderlich, um Pisten auf der Karte anzuzeigen. From bd287e1c282a541fe3af48d91f2ff4a4592d136f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Fri, 22 May 2020 17:55:33 +0000 Subject: [PATCH 019/108] Translated using Weblate (Turkish) Currently translated at 100.0% (3340 of 3340 strings) --- OsmAnd/res/values-tr/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index f4b30a5b89..3ea95e3bfc 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -1807,7 +1807,7 @@ GPX kaydını duraklat Yeni bir segment başlat Araç olmayan otoyollar - Ahşap ve scrubs + Ağaç ve çalılıklar Binalar üzerinde yakınlaştırma 15 Erişim kısıtlamaları Geçiş hakkındaki kısıtlamaları ve geçiş ücretlerini göster From 9e5bc1cc6a5dbe061df992506487aaeb69aea77d Mon Sep 17 00:00:00 2001 From: Athoss Date: Fri, 22 May 2020 09:43:08 +0000 Subject: [PATCH 020/108] Translated using Weblate (Hungarian) Currently translated at 95.8% (3204 of 3341 strings) --- OsmAnd/res/values-hu/strings.xml | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index b7e790be2a..2453df8c53 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -2354,7 +2354,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Max/Min Min/Max Navigáció szüneteltetése/folytatása - A navigáció szüneteltetéséhez vagy folytatásához koppintson erre a gombra. + Gomb a navigáció szüneteltetéséhez vagy folytatásához. „Navigáció véget ért” panel megjelenítése Navigáció indítása/megállítása A navigáció elkezdéséhez vagy befejezéséhez koppintson erre a gombra. @@ -3631,7 +3631,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük \n \n • Kedvencek és GPX-útpontok teljes testreszabhatósága – egyéni színek, ikonok, formák \n -\n • Opciók menü, Térkép beállítása és Főmenü elemeinek sorrendje testreszabhatók +\n • Opciók menü, Térkép beállítása és Főmenü elemeinek sorrendje testreszabható \n \n • Wikipédia külön rétegként szerepel a Térkép beállítása menüben, a kívánt nyelvek kiválaszthatók \n @@ -3647,4 +3647,5 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük \n \n Nem támogatott típus + Folytatás \ No newline at end of file From bdc9d8ddcec21d4c574149164bfe0378e55de08d Mon Sep 17 00:00:00 2001 From: ihor_ck Date: Wed, 20 May 2020 22:01:03 +0000 Subject: [PATCH 021/108] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-uk/strings.xml | 34 ++++++++++++++++---------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 1c28771902..150624447c 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -262,7 +262,7 @@ Налагоджувальні відомості про відмалювання Відображає плідність відмалювання. Розпаковуються нові дані… - Мережева служба навігації обрана, але Ви не підключені до Всемережжя. + Вибрано мережеву службу навігації, але ви не підключені до Інтернету. Мова не підтримується Вибрана мова не підтримується встановленим двигуном Android TTS (текстовим мовленням), замість цього буде використана його попередньо налаштована мова TTS. Шукаєте інший двигун TTS\? Дані відсутні @@ -801,7 +801,7 @@ Стоп Почати Звуко/відео-нотатки - Втулок OsmAnd для відображення горизонталей в автономному режимі + Плагін OsmAnd для показу горизонталей в автономному режимі Використовувати програму Камера Налаштування авдіо/відео запису. Налаштування аудіо/відео @@ -830,9 +830,9 @@ Звуко/відео-нотатки частин Горизонталі - Цей втулок показує як шар горизонталей, так і шар рельєфу поверх усталених мап OsmAnd. Ця функціональність стане в нагоді спортсменам, туристам, мандрівникам та будь-кому, хто цікавиться структурою рельєфу місцевості. (Зверніть увагу, що дані про горизонталі є окремими від даних про рельєф; додаткові завантаження доступні після задіювання втулку.) + Цей втулок показує як шар горизонталей, так і шар рельєфу поверх усталених мап OsmAnd. Ця функціональність стане в пригоді спортсменам, туристам, мандрівникам та будь-кому, хто цікавиться структурою рельєфу місцевості. (Зверніть увагу, що дані про горизонталі є окремими від даних про рельєф; додаткові завантаження доступні після задіювання втулку.) \n -\nВсесвітні дані (між 70° на півночі і 70° на півдні) засновано на вимірюваннях SRTM (Shuttle Radar Topography Mission) і ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), даних інструменту відмальовування Terra, флагманського супутника устрою спостереження Землі від NASA. ASTER — це підсумок спільної роботи NASA, міністерства економіки Японії, міністерства торгівлі і промисловості Японії (METI), агенції космічних систем Японії (J-spacesystems). +\nВсесвітні дані (між 70° на півночі й 70° на півдні) засновано на вимірюваннях SRTM (Shuttle Radar Topography Mission) і ASTER (Advanced Spaceborne Thermal Emission and Reflection Radiometer), даних інструменту відмальовування Terra, флагманського супутника устрою спостереження Землі від NASA. ASTER — це підсумок спільної роботи NASA, міністерства економіки Японії, міністерства торгівлі та промисловості Японії (METI), агенції космічних систем Японії (J-spacesystems). Горизонталі Інші мапи Тільки дороги @@ -1306,9 +1306,9 @@ Автівка Велосипед Пішки - Цей втулок задіює можливість записувати та зберігати Ваші треки вручну, торкаючись віджету записування GPX на екрані мапи, або автоматично записувати всі Ваші подорожі у файл GPX. + Цей втулок додає функцію запису та збереження ваших пересувань вручну, торканням віджету записування GPX на екрані мапи, або автоматично записувати всі ваші подорожі у файл GPX. \n -\nЗаписаними треками можна поділитись з Вашими друзями або іншими учасниками спільноти OSM. Атлети можуть використовувати записані треки для відстежування власних тренувань. Основний розбір треків наявний безпосередньо в OsmAnd, наприклад: час проходження кола, середня швидкість й т.п., звісно, записані треки можна також проаналізувати за допомогою іншого програмного забезпечення. +\nЗаписаними маршрутами можна поділитись з вашими друзями або іншими учасниками спільноти OSM. Атлети можуть користуватися записаними маршрутами для відстеження власних тренувань. Основні деталі маршрутів наявний безпосередньо в OsmAnd, наприклад: час проходження кола, середня швидкість тощо, звісно, записані маршрути, також можна проаналізувати за допомогою сторонніх інструментів. Писати трек у файл GPX Загальний запис розташування до файлу GPX можна ввімкнути або вимкнути кнопкою запис GPX на екрані з мапою. Інтервал записування @@ -1445,7 +1445,7 @@ Увімкнути Вимкнути Опис - Для встановлення цього втулку вам потрібне з’єднання з Всемережжям. + Для встановлення цього втулка вам потрібне з’єднання з Інтернетом. Отримати Цей втулок збагачує OsmAnd морськими мапами для човнів, вітрильного спорту та інших видів водних видів спорту. \n @@ -1700,7 +1700,7 @@ Зупинити симуляцію Вашої позиції. Пошук адреси Місця - Втулки + Плагіни Без приміських поїздів Уникати приміських поїздів Небезпека @@ -2242,11 +2242,11 @@ Відсортоване за відстанню Пошук у закладках Для того, щоб відобразити затінення рельєфу, потрібно завантажити спеціальну мапу для цієї області. - Щоб побачити рельєф місцевості на мапі, вам потрібно придбати та встановити втулок \'Горизонталі\' (\'Contour Lines\'). + Щоб побачити рельєф місцевості на мапі, вам потрібно придбати та встановити плагін \'Горизонталі\' (\'Contour Lines\'). Приховати від рівня масштабування Завантажте мапу \'Горизонталі\' (\'Contour Line\') для використання у цій області. Втулок - Щоб побачити горизонталі на мапі, вам потрібно придбати і встановити відповідний однойменний втулок (\'Contour Lines\'). + Щоб побачити горизонталі на мапі, вам потрібно придбати та встановити втулок \'Горизонталі\'. Схема кольорів Відображення від рівня масштабування Дозволити приватний доступ @@ -2470,7 +2470,7 @@ Натисніть цю кнопку, щоб почати або закінчити навігацію. Час буферизації для мережевого стеження Задає час буферизації для збереження місць для відправки в автономному режимі - Ви повинні бути підключені до Всемережжя для перегляду світлин від Mapillary. + Ви повинні бути підключені до Інтернету для перегляду світлин від Mapillary. Повторити Перегляньте мапу і додайте точки Вимірювання відстані @@ -2689,7 +2689,7 @@ Додати точку Зберегти як трек Редагувати дії - Отримайте OsmAnd Live, аби розблокувати всі функції: щоденні оновлення мапи з необмеженими завантаженнями, всі платні та безкоштовні втулки, Вікіпедію, Вікімандри та багато іншого. + Отримайте OsmAnd Live, аби розблокувати всі функції: щоденні оновлення мапи з необмеженими завантаженнями, всі платні та безплатні втулки, Вікіпедію, Вікімандри та багато іншого. Закладка Приховати повний опис Показати повний опис @@ -3275,7 +3275,7 @@ Впливає на весь застосунок Навігаційні вказівки та оголошення Буфер logcat - Налаштування втулка + Налаштування плагіна Усталено Розраховує час прибуття для невідомих типів доріг і обмежує швидкість для всіх доріг (може вплинути на маршрутизацію) Завантажте докладну мапу %s, щоб переглянути цю область. @@ -3480,7 +3480,7 @@ Доступні Додати власну категорію Показувати лише вночі - Усі налаштування втулка відновлено до усталеного стану. + Усі налаштування плагіна відновлено до типового стану. Усі налаштування профілю відновлено до усталеного стану. %1$s/%2$s Захід сонця о %1$s @@ -3523,9 +3523,9 @@ Укажіть назву профілю Відкрити налаштування Плагін вимкнено - Цей плагін є окремою програмою, якщо ви не плануєте користуватися ним надалі, його потрібно буде видалити окремо. + Цей втулок є окремою програмою, якщо ви не плануєте користуватися ним надалі, його потрібно буде видалити окремо. \n -\nВтулок залишиться на пристрої після видалення OsmAnd. +\nВін залишиться на пристрої після видалення OsmAnd. Меню %1$s — %2$s — %3$s Маршрутизація @@ -3617,7 +3617,7 @@ Для перегляду POI Вікіпедії на мапі потрібні додаткові мапи. Встановлення кількості елементів меню \"Скринька\", \"Налаштувати мапу\" та \"Контекстне меню\". \n -\nВимкніть непотрібні плагіни, щоби приховати всі їхні елементи керування %1$s. +\nВимкніть непотрібні втулки, щоби приховати всі їхні елементи керування %1$s. Елементи скриньки, контекстне меню Налаштування інтерфейсу Скринька From df8dd749177e0cc17e9cbaf97bae679a1da5de01 Mon Sep 17 00:00:00 2001 From: Mirco Zorzo Date: Fri, 22 May 2020 04:50:31 +0000 Subject: [PATCH 022/108] Translated using Weblate (Italian) Currently translated at 88.9% (2973 of 3341 strings) --- OsmAnd/res/values-it/strings.xml | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/OsmAnd/res/values-it/strings.xml b/OsmAnd/res/values-it/strings.xml index 82d219cb9e..dc8ed9599c 100644 --- a/OsmAnd/res/values-it/strings.xml +++ b/OsmAnd/res/values-it/strings.xml @@ -3628,4 +3628,18 @@ Rappresenta l\'area: %1$s x %2$s \nDurante la lettura potrai cambiare fra tutte le lingue disponibili. Plugin sviluppatore Oggetti + Nascondi i trasporti pubblici + Mostra i trasporti pubblici + Mostra/nascondi i trasporti pubblici + Il pulsante mostra o nasconde nella mappa i trasporti pubblici. + Crea/Modifica PDI + Posizione di parcheggio + Aggiungi/Modifica Preferito + Ripristina l\'ordine preimpostato degli oggetti + Ritorna alla modifica + Il pulsante azione cambia fra i profili selezionati. + Aggiungi profilo + Cambia il profilo dell\'app + Non è possibile trovare alcun profilo. + Mappa mondiale generale (dettagliata) \ No newline at end of file From 62851a5ef5c1274d00d96778a4f41f98905aef40 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sat, 23 May 2020 17:53:23 +0000 Subject: [PATCH 023/108] Translated using Weblate (Slovak) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-sk/strings.xml | 98 +++++++++++++++++--------------- 1 file changed, 53 insertions(+), 45 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 601dc971d2..67fbeb98f6 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -310,8 +310,7 @@ Inštalovať viac… Použiť rastrové mapy pre všetko nad touto úrovňou. Minimálna úroveň vektorového priblíženia - - Online OSM mapová klasifikácia s obrázkami. + Online OSM mapová klasifikácia s obrázkami. Nepodarilo sa vykonať offline hľadanie. Nájsť adresu pomocou polohy Systémový @@ -1477,7 +1476,7 @@ Simulovať pozíciu Zoznam Šírka %1$s -Dĺžka %2$s +\nDĺžka %2$s Často kladené otázky, nedávne zmeny a iné. Navigačné nastavenia Všeobecné nastavenia @@ -2029,7 +2028,7 @@ Dĺžka %2$s Získajte neobmedzené sťahovanie máp a aktualizácie každý týždeň, deň alebo hodinu. Neobmedzené sťahovanie máp, aktualizácií a modul Wikipédia. Míle/metre - Predplatné bude spoplatnené každý mesiac. Predplatné zrušte kedykoľvek na Google Play. + Predplatné bude spoplatnené v zvolenom intervale. Predplatné zrušte kedykoľvek na Google Play. Príspevok komunite OSM Časť príspevku bude zaslaná prispievateľom do OSM. Cena predplatného zostáva rovnaká. Predplatné umožňuje hodinové, denné, týždenné aktualizácie a neobmedzené sťahovanie máp celého sveta. @@ -2114,11 +2113,11 @@ Dĺžka %2$s Zobraziť editor Obľúbených Otvorený kód pre polohu (OLC) Neplatný kód OLC - +\n Krátky kód OLC -Prosím zadajte úplný kód +\nProsím zadajte úplný kód Platný kód OLC -Zodpovedá oblasti: %1$s x %2$s +\nZodpovedá oblasti: %1$s x %2$s Rýchla akcia Akcia %d Obrazovka %d @@ -2163,7 +2162,7 @@ Zodpovedá oblasti: %1$s x %2$s Vyberte voliteľnú kategóriu. Zoznam POI Pridať jednu alebo viac kategórií POI, ktoré sa zobrazia na mape. - Tlačidlo pre posunie zoznam dolu na ďalšiu stranu. + Tlačidlo pre posunutie zoznam dolu na ďalšiu stranu. Pridať štýl mapy Vyplňte všetky parametre Štýly mapy @@ -2246,15 +2245,17 @@ Zodpovedá oblasti: %1$s x %2$s \n • Priblíženie mapy sa prispôsobuje rýchlosti \n • Vyhľadávanie miest podľa adresy, typu (napr.: reštaurácie, hotely, čerpacie stanice, múzeá) alebo zemepisných súradníc \n • Umožňuje zadať prechodné body trasy -\n • Nahrajte alebo odošlite GPX stopu a nasledujte ju - "Mapa +\n • Nahrajte alebo odošlite GPX stopu a nasledujte ju +\n + Mapa \n • Zobrazenie POI (bodov záujmu) v okolí \n • Možnosť zobrazenia mapy v smere pohybu (alebo kompasu) \n • Zobrazovanie vašej pozície a orientácie na mape \n • Zdieľajte polohu, aby vás priatelia modli nájsť \n • Uloženie obľúbených miest \n • Môže zvoliť ako zobraziť názvy na mape: v angličtine, lokálnom jazyku alebo foneticky -\n • Umožňuje zobraziť špecializované podkladové mapy z Internetu, satelitné snímky (z Bing), rôzne prekryvné vrstvy ako turistické/navigačné GPX stopy a ďalšie vrstvy s nastaviteľnou priehľadnosťou " +\n • Umožňuje zobraziť špecializované podkladové mapy z Internetu, satelitné snímky (z Bing), rôzne prekryvné vrstvy ako turistické/navigačné GPX stopy a ďalšie vrstvy s nastaviteľnou priehľadnosťou +\n Lyžovanie \n Modul lyžiarskych máp umožňuje zobraziť náročnosť zjazdoviek a ďalšie údaje, ako poloha vlekov a iných služieb. Bicyklovanie @@ -2263,16 +2264,18 @@ Zodpovedá oblasti: %1$s x %2$s \n • Môžete vidieť rýchlosť a nadmorskú výšku \n • Nahrávanie GPX umožňuje nahrať výlet a zdieľať ho \n • Doplnkovým modulom môžete zobraziť vrstevnice a tieňovanie svahov - Prechádzky, turistika, prehliadky miest -\n • Mapy obsahujú aj cesty pre chodcov a turistov -\n • Wikipédia vo vašom jazyku vám povie veľa počas potuliek mestom -\n • Zastávky hromadnej dopravy (autobus, električka, vlak) vrátane názvov liniek -\n • GPS navigácia v režime chodca vytvorí trasu po cestách pre peších -\n • Môžete odoslať a nasledovať GPX trasu výletu alebo nahrať a zdieľať vlastné - Prispievajte do OSM -\n • Hláste chyby v mape -\n • Odosielajte GPX stopy do OSM priamo z aplikácie -\n • Pridávajte body záujmu a priamo ich odošlite do OSM (alebo neskôr, ak ste offline) + Prechádzky, turistika, prehliadky miest +\n • Mapy obsahujú aj cesty pre chodcov a turistov +\n • Wikipédia vo vašom jazyku vám povie veľa počas potuliek mestom +\n • Zastávky hromadnej dopravy (autobus, električka, vlak) vrátane názvov liniek +\n • GPS navigácia v režime chodca vytvorí trasu po cestách pre peších +\n • Môžete odoslať a nasledovať GPX trasu výletu alebo nahrať a zdieľať vlastné +\n + Prispievajte do OSM +\n • Hláste chyby v mape +\n • Odosielajte GPX stopy do OSM priamo z aplikácie +\n • Pridávajte body záujmu a priamo ich odošlite do OSM (alebo neskôr, ak ste offline) +\n OsmAnd je aktívne vyvíjaný slobodný softvér. Každý môže prispieť do aplikácie hlásením chýb, vylepšením prekladu alebo programovaním nových funkcií. Projektu tiež závisí od finančných príspevkov na vývoj a testovanie nových funkcií. \n Približná kvalita pokrytia máp: \n • Západná Európa: **** @@ -2299,7 +2302,8 @@ Zodpovedá oblasti: %1$s x %2$s \n • Voliteľné navádzanie v jazdných pruhoch, zobrazenie názvov ulíc a odhadovaný čas do cieľa \n • Umožňuje zadať prechodné body trasy \n • Automatické prepočítanie trasy ak sa odchýlite z trasy -\n • Vyhľadávanie miest podľa adresy, typu (napr.: reštaurácie, hotely, čerpacie stanice, múzeá) alebo zemepisných súradníc +\n • Vyhľadávanie miest podľa adresy, typu (napr.: reštaurácie, hotely, čerpacie stanice, múzeá) alebo zemepisných súradníc +\n Zobrazenie mapy \n • Zobrazovanie vašej pozície a orientácie na mape \n • Možnosť otočenia mapy v smere pohybu podľa kompasu @@ -2316,18 +2320,19 @@ Zodpovedá oblasti: %1$s x %2$s \n • Kompaktné vektorové offline mapy \n \n • Možnosť voľby medzi kompletnými mapami alebo len cestnou sieťou (napr. celé Japonsko má 700 MB, jeho cestná sieť iba 200 MB) - "Bezpečnostné funkcie + Bezpečnostné funkcie \n • Voliteľné automatické prepínanie medzi denným a nočným režimom \n • Voliteľné zobrazenie povolenej rýchlosti s upozornením na jej prekročenie \n • Voliteľné približovanie mapy podľa rýchlosti -\n • Zdieľajte vašu polohu s priateľmi, aby vás mohli nájsť " - "Funkcie pre cyklistov a chodcov +\n • Zdieľajte vašu polohu s priateľmi, aby vás mohli nájsť +\n + Funkcie pre cyklistov a chodcov \n • Mapy obsahujú aj cesty pre chodcov, turistov a cyklistov - vhodné pre aktivity v prírode \n • Špeciálne režimy zobrazenia a navigácie pre chodcov a cyklistov \n • Voliteľné zobrazenie zastávok hromadnej dopravy (autobus, električka, vlak) vrátane názvov liniek \n • Voliteľné nahrávanie výletu do GPX súboru (lokálneho alebo online služby) \n • Voliteľné zobrazenie rýchlosti a nadmorskej výšky -\n • Zobrazenie vrstevníc a tieňovania svahov (s doplnkovými modulmi) " +\n • Zobrazenie vrstevníc a tieňovania svahov (s doplnkovými modulmi) Prispievajte priamo do OpenStreetMap \n • Hláste chyby v údajoch \n • Odosielajte GPX stopy do OSM priamo z aplikácie @@ -2335,7 +2340,7 @@ Zodpovedá oblasti: %1$s x %2$s \n • Voliteľné nahrávanie výletu na pozadí (keď je zariadenie v režime spánku) \n OsmAnd je aktívne vyvíjaný slobodný softvér. Každý môže prispieť do aplikácie hlásením chýb, vylepšením prekladu alebo programovaním nových funkcií. Projekt tiež závisí od finančných príspevkov na vývoj a testovanie nových funkcií. \n - "Približná kvalita pokrytia máp: + Približná kvalita pokrytia máp: \n • Západná Európa: **** \n • Východná Európa: *** \n • Rusko: *** @@ -2346,8 +2351,9 @@ Zodpovedá oblasti: %1$s x %2$s \n • Blízky Východ: ** \n • Afrika: ** \n • Antarktída: * -\n Väčšina krajín sveta je k dispozícii na stiahnutie! -\n Od Afganistanu po Zimbabwe, od Austrálie po USA. Argentína, Brazília, Kanada, Francúzsko, Nemecko, Mexiko, Spojené kráľovstvo, Španielsko, Slovensko, … " +\n Väčšina krajín sveta je k dispozícii na stiahnutie. +\n Od Afganistanu po Zimbabwe, od Austrálie po USA. Argentína, Brazília, Kanada, Francúzsko, Nemecko, Mexiko, Spojené kráľovstvo, Španielsko, Slovensko, … +\n Obnoviť nákupy Hĺbkové vrstevnice (izobaty) a značky v moriach. Ďakujeme za zakúpenie \"Námorných hĺbkových vrstevníc\" @@ -3410,7 +3416,7 @@ Zodpovedá oblasti: %1$s x %2$s Ikona, farba a názov Upraviť zoznam profilov Zvolený profil - Stlačením %1$s zahodíte všetky vaše zmeny. + Stlačenie %1$s zahodí všetky vaše zmeny. Resetovať všetky nastavenia profilu do východzieho stavu. Resetovať všetky nastavenia profilu\? %1$s: %2$s @@ -3472,7 +3478,7 @@ Zodpovedá oblasti: %1$s x %2$s %1$s/%2$s Západ slnka o %1$s Východ slnka o %1$s - Režim uľahčenia prístupu je na tomto systéme vypnutý. + Režim uľahčenia prístupu je vo vašom Androide vypnutý. Použiť systémový časový limit obrazovky Predvolene vypnuté, ak OsmAnd beží v popredí, obrazovka nezhasne. \n @@ -3536,10 +3542,10 @@ Zodpovedá oblasti: %1$s x %2$s Navigácia Vlastný štýl vykresľovania Zahrnúť dodatočné údaje - Importovaný profil obsahuje dodatočné údaje. Kliknite Import pre importovanie len údaje profilu alebo zvoľte, ktoré dodatočné údaje majú byť importované. + Importovaný profil obsahuje dodatočné údaje. Kliknite \"Import\" pre importovanie len údajov profilu, alebo zvoľte dodatočné údaje. Môžete zvoliť dodatočné údaje na importovanie spolu s profilom. Antarktída - Vypnúť prepočítavanie + Žiadne prepočítavanie Minimálna vzdialenosť pre prepočítanie trasy Trasa bude prepočítaná ak vzdialenosť od trasy je väčšia ako uvedený parameter Zobrazený %1$s už existuje v OsmAnd. @@ -3584,7 +3590,7 @@ Zodpovedá oblasti: %1$s x %2$s Trasa bude prepočítaná ak vzdialenosť od trasy k aktuálnej polohe je väčšia ako zvolená hodnota. %1$s z %2$s Svahy - Zobraziť/skryť terén + Zobraziť / skryť terén Skryť terén Zobraziť terén Tlačidlo pre zobrazenie alebo skrytie vrstvy terénu na mape. @@ -3612,9 +3618,9 @@ Zodpovedá oblasti: %1$s x %2$s Niektoré články Wikipedia nemusia byť dostupné vo vašom jazyku. Zvoľte jazyky, v ktorých sa články Wikipedia budú zobrazovať na mape. \nPri čítaní článku budete môcť prepínať medzi všetkými dostupnými jazykmi. Pre zobrazenie bodov Wikipedie na mape sú potrebné ďalšie mapy. - Upraviť počet položiek v Úvodnom paneli, Nastaviť mapu a Kontextovom menu. -\n -\nMôžete vypnúť nepoužívané moduly, aby sa skryli ich ovládacie prvky z aplikácie %1$s. + Upraviť počet položiek v \"Úvodnom paneli\", \"Nastaviť mapu\" a \"Kontextovom menu\". +\n +\nVypnite nepoužívané moduly pre skrytie ich ovládacích prvkov. %1$s. Položky v úvodnom paneli a kontextovom menu Prispôsobenie používateľského rozhrania Úvodný panel @@ -3625,7 +3631,7 @@ Zodpovedá oblasti: %1$s x %2$s Skryté Tieto položky sú skryté z menu, ale ich možnosti a moduly zostanú funkčné. Skrytie nastavení ich resetuje do pôvodného stavu. - \"Hlavné akcie\" obsahujú len 4 tlačidlá. + Obsahuje len 4 tlačidlá. Hlavné akcie Môžete presúvať položky len v rámci tejto kategórie. Doplnok pre vývojárov @@ -3669,7 +3675,7 @@ Zodpovedá oblasti: %1$s x %2$s \n \n Vaše predplatné môžete spravovať a zrušiť v nastaveniach Google Play. Hľadať typy bodov záujmu - Skombinovať typy bodov záujmov z rôznych kategórií. Stlačte \"Prepnúť\" pre zvolenie všetkých, stlačte ľavú stranu pre výber kategórií. + Skombinovať typy bodov záujmov z rôznych kategórií. Stlačenie \"Prepnúť\" vyberie všetky, stlačenie ľavej strany vyberie kategóriu. Stopovanie OsmAnd OsmAnd + Mapillary Rýchla akcia @@ -3680,13 +3686,13 @@ Zodpovedá oblasti: %1$s x %2$s Obľúbené Predplatné - OsmAnd Live Nákupy v OsmAnd - Sprievodca symbolmi na mape + Sprievodca symbolmi na mape. Navigačné profily • Nové offline mapy svahov \n \n • Plné prispôsobenie Obľúbených a bodov GPX – vlastné farby, ikony a tvary \n -\n • Možnosť prispôsobenia poradia položiek v kontextovom menu, nastavení mapy a úvodnom paneli +\n • Možnosť prispôsobenia poradia položiek v \"kontextovom menu\", \"Nastavenie mapy\" a \"Úvodnom paneli\" \n \n • Wikipédia ako samostatná vrstva v nastavení mapy, možnosť vybrať iba potrebné jazyky \n @@ -3703,16 +3709,18 @@ Zodpovedá oblasti: %1$s x %2$s \n Skryť verejnú dopravu Zobraziť verejnú dopravu - Zobraziť/skryť verejnú dopravu + Zobraziť / skryť verejnú dopravu Tlačidlo na zobrazenie alebo skrytie verejnej dopravy na mape. - Vytvoriť/Upraviť bod záujmu + Vytvoriť / Upraviť bod záujmu Parkovacie miesta Pridať / Upraviť obľúbený bod Obnoviť predvolené poradie položiek Naspäť k úpravám K týmto akciám sa dostanete stlačením tlačidla “%1$s”. - Stlačením tlačidla akcie sa prepne medzi zvolenými profilmi. + Tlačidlo akcie prepne medzi zvolenými profilmi. Pridať profil Zmeniť aplikačný profil - Nenašli sa profily vybrané pre túto akciu. + Nenašli sa žiadne vhodné profily. + Prehľadová mapa sveta (detailná) + Nepodporovaný typ \ No newline at end of file From 38656de0c56ae42523389165b2b9b4c27217e0a7 Mon Sep 17 00:00:00 2001 From: Piotr Kubowicz Date: Sat, 23 May 2020 14:45:08 +0000 Subject: [PATCH 024/108] Translated using Weblate (Polish) Currently translated at 99.4% (3322 of 3341 strings) --- OsmAnd/res/values-pl/strings.xml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 7f4fd9466e..489c16a393 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -1181,7 +1181,7 @@ Adresy krajowe Podstawowa mapa świata Światowa mapa tras narciarskich - Komunikaty głosowe wstrzymają odtwarzanie muzyki. + Komunikaty głosowe zatrzymają odtwarzanie muzyki. Przerywanie muzyki Zawsze wyśrodkowane położenie Głos @@ -1263,7 +1263,7 @@ Rozpocznij śledzenie online Zakończ śledzenie online Kontynuuj rejestrowanie śladu - Wstrzymaj rejestrowanie śladu + Zatrzymaj rejestrowanie śladu Rozpocznij nowy segment Budynki Trasy niedostępne dla aut @@ -1293,7 +1293,7 @@ Pieszo Różne kolory typów budynków Kontynuuj nawigację - Wstrzymaj nawigację + Zatrzymaj nawigację Klasyfikacja trudności wspinaczki alpinistycznej (SAC) Renderuj ścieżki zgodnie ze skalą SAC. Szlaki turystyczne @@ -2070,7 +2070,7 @@ Długość %2$s Oczekując Świąt Bożego Narodzenia i Nowego Roku, możesz włączyć wyświetlanie użytecznych miejsc związanych ze Świętami: choinki, jarmarki, itp. Wyświetlać świąteczne miejsca? Kontynuuj - Wstrzymaj + Zatrzymaj Ślad Zarejestrowany Rejestruj @@ -2368,7 +2368,7 @@ Reprezentuje obszar: %1$s x %2$s Podjazd/zjazd Czas w ruchu Maks./min. - Wstrzymaj/wznów nawigację + Zatrzymaj/wznów nawigację Przycisk do wstrzymania lub wznowienia nawigacji. Rozpocznij/zakończ nawigację Przycisk rozpoczęcia lub zakończenia nawigacji. @@ -3270,7 +3270,7 @@ Reprezentuje obszar: %1$s x %2$s Konfiguruje nawigację Alerty będą wyświetlane w lewym dolnym rogu podczas nawigacji. Przywróć ustawienia domyślne - Konfiguruje opcje działające w całej aplikacji + Konfiguruje opcje dotyczące całej aplikacji Włącz ekran Mapa podczas nawigacji Mapa podczas nawigacji @@ -3480,7 +3480,7 @@ Reprezentuje obszar: %1$s x %2$s Dźwięk migawki aparatu Przywrócenie domyślnej kolejności sortowania spowoduje przywrócenie porządku sortowania do stanu domyślnego po instalacji. Tryb ułatwień dostępu wyłączony w twoim systemie. - Użyj czasu wyświetlania ekranu systemowego + Wygaś ekran zgodnie z ustawieniami systemu Wyczyść zarejestrowane dane - Profile: teraz można zmienić kolejność, ustawić ikonę dla mapy, zmienić wszystkie ustawienia dla profili bazowych i przywrócić je do domyślnych ustawień. \n @@ -3728,4 +3728,6 @@ Reprezentuje obszar: %1$s x %2$s Miejsca parkingowe Przywróć domyślną kolejność elementów Nie znaleziono profili wybranych dla tej czynności. + Mapa przeglądowa świata (szczegółowa) + Nieobsługiwany typ \ No newline at end of file From afbbcaca429b0313f1be505e46cd1f4d0359d1a4 Mon Sep 17 00:00:00 2001 From: Rex_sa Date: Sat, 23 May 2020 08:51:43 +0000 Subject: [PATCH 025/108] Translated using Weblate (Arabic) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-ar/strings.xml | 93 ++++++++++++++++++++------------ 1 file changed, 60 insertions(+), 33 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 758561c2a9..06d8831200 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -419,7 +419,8 @@ مساء صباحاً مكان للوقوف - يساعد هذا الملحق بحفظ الأماكن التي ركنت بها سيارتك والوقت المتبقي للركن (في حالة وجود وقت محدد). كل من المكان والزمن متواجدان على لوحة التحكم وكذلك في المؤشرات على شاشة الخريطة. يمكن إضافة منبه إلى التقويم للتذكير. + يساعد هذا الملحق بحفظ الأماكن التي ركنت بها سيارتك والوقت المتبقي للركن (في حالة وجود وقت محدد). +\nكل من المكان والزمن متواجدان على لوحة التحكم وكذلك في المؤشرات على شاشة الخريطة. يمكن إضافة منبه إلى التقويم للتذكير. مكان الموقف موقف السيارة احذف علامة وقوف السيارات @@ -498,12 +499,10 @@ تركيز تلقائي التركيز البؤري نوع الكاميرا - * بعد بدء التعديل: -\n المس الخريطة لوضع نقطة. -\n اضغط باستمرار على الخريطة -\n لحذف النقطة السابقة. * بعد إنهاء العديل: -\n استمر بالضغط على نقطة أو على -\n خط القياس للمزيد من الخيارات. + * انقر لتحديد نقطة. +\n  * اضغط لفترة طويلة على الخريطة لحذف النقطة السابقة. +\n  * اضغط لفترة طويلة على نقطة لعرض وإرفاق الوصف. +\n  * اضغط على أداة القياس لمعرفة المزيد من الإجراءات. طبقة التضاريس طبقة التضاريس بيانات الخطوط المحيطية @@ -549,7 +548,8 @@ اختيار المسار النشط الحالي اختيار مسار محفوظ تذكر اختياري - إجمالي الذاكرة الأصلية المخصصة من قبل التطبيق %1$s م.ب (دلفيك %2$s م.ب, أخرى %3$s م.ب). الذاكرة النسبية %4$s م.ب (حد الأندرويد %5$s م.ب, دلفيك %6$s م.ب). + إجمالي الذاكرة الأصلية المخصصة من قبل التطبيق %1$s م.ب (دلفيك %2$s م.ب, أخرى %3$s م.ب). +\nالذاكرة النسبية %4$s م.ب (حد الأندرويد %5$s م.ب, دلفيك %6$s م.ب). مشي دراجة نارية قارب @@ -589,10 +589,8 @@ \n يجري تطوير أوسماند بنشاط ويعتمد مشروعنا والتقدم المستمر على المساهمات المالية لتطوير واختبار وظائف جديدة. يرجى النظر في شراء أوسماند+ ، أو تمويل ميزات جديدة محددة أو تقديم تبرع عام على https://osmand.net. عن طريق هذه الأداة يمكنك الوصول إلى أنواع عديدة من خرائط النت (تدعى بالقطع أو النقطية)، من قطع OSM مسبقة ( مثل Mapnik) إلى صور أقمار وطبقات مخصصة كخرائط الطقس، الخرائط الجيولوجية، طبقات التضاريس...إلخ. \n -\n \nكل من هذه الخرائط يمكن أن تستخدم إما كخرائط رئيسية (قاعدية) تظهر على واجهة التطبيق، أو كطبقة فوقية أو تحتية لخريطة قاعدية آخرى( كخرائط التطبيق المحلية). لجعل أي طبقة تحتية خريطة أكثر وضوحا، بعض عناصر خرائط التطبيق التوجيهيه يمكن إخفاءها في قائمة \'ضبط الخريطة\' حسب الرغبة. \n -\n \nأجزاء الخرائط يمكن الحصول عليها من مصادر إنترنت، أو تحضيرها للإستخدام دون إنترنت ( ونسخها يدويا إلى مجلد بيانات التطبيق) كقاعدة بيانات SQLite والتي يمكن إنتاجها عن طريق مجموعة متنوعة من أدوات تحضير الخرائط المستقلة. التغييرات POI داخل التطبيق لا تؤثرعلى ملفات الخرائط المحملة، يتم حفظ التغييرات إلى ملف محلي بدلا من ذلك. وضع تركيز الكاميرا: @@ -630,7 +628,8 @@ حالة وضع السكون استخدمها لتشغيل أوسماند عندما تكون الشاشة مُطفأة. لا يوجد مساحة كافية لتحميل %1$s م.ب المساحة الخالية: %2$s. - تحميل {0} ملف ؟ مساحة التخزين المستخدمة هي {1} مب (المساحة المتوفرة هي {2} مب). + تحميل {0} ملف(ات) ؟ +\n مساحة التخزين المستخدمة هي {1} مب (المساحة المتوفرة هي {2} مب). السمة الشفافة المكتبات الأصيلة غير مدعومة على هذا الجهاز. تهيئة المكتبة الأصيلة… @@ -726,7 +725,9 @@ عكس المسار استخدم الوجهة الحالية يمر على طول المسار باكمله - فعل الخريطة المحملة من: الضبط ثم مصدر الخريطة. + "خريطة التنقل المتوفرة حاليا لهذا الموقع. +\n +\nلتفعليها \'القائمة\' → \'تكوين الخريطة\' → \'مصدر الخريطة ...\' → \'خرائط متجهة بدون اتصال\'." مصدر التوجيه الصوتي اختيار قناة لتشغيل التوجيه الصوتي. صوت المكالمة الهاتفية ( كما يحاول قطع ستريو بلوتوث السيارة ) @@ -773,7 +774,8 @@ ميل ساعة ميل شارك المكان باستخدام - الموقع : %1$s %2$s + الموقع: %1$s +\n%2$s إتبع رابط متصفح الويب لمشاهدة المكان %1$s أو استعمل رابط أندرويد الخاص %2$s إرسال الموقع مشاركة المكان @@ -934,7 +936,8 @@ زيارة بعد زيارة قبل محاكاة تخيلية - N %1$s E %2$s + خط العرض %1$s +\nخط الطول %2$s الأسئلة الشائعة، التغييرات الحديثة، وأخرى. إعدادات الملاحة إعدادات عامة @@ -1029,7 +1032,9 @@ فشل في إعادة التسمية. عودة إلى الخريطة شارك ملاحظة - الموقع : N %1$s E %2$s + الموقع: +\n Lat %1$s +\n Lon %2$s ملاحظات خريطة إنترنت الطرق فقط @@ -1493,7 +1498,10 @@ أقل مهلة بين الاخطارات. الخريطة مرتبطة بالموقع عريض - المستخدم المجهول لا يمكنه : - إنشاء مجموعة; - مزامنة المجموعات والأجهزة مع السيرفر; - إدارة المجموعات والأجهزة من خلال لوحة تحكم خاصة على الموقع. + المستخدم المجهول لا يمكنه : +\n- إنشاء مجموعة; +\n- مزامنة المجموعات والأجهزة مع السيرفر; +\n- إدارة المجموعات والأجهزة من خلال لوحة تحكم خاصة على الموقع. تطبيق الملاحة أوسماند خطأ أثناء تحميل البيانات من الخادم. تحديث البيانات المحلية عبر الإنترنت ؟ @@ -1598,7 +1606,9 @@ نحن بحاجة اليه لكي نوفر لك معلومات حول المساهمات. حدد علامة الخريطة عرض شريط الشفافية - المساحة غير كافية! المساحة المطلوبة {3} م.ب مؤقتاً {1} م.ب دائمة المتوفر {2} م.ب + لا توجد مساحة كافية! +\n {3} MB مطلوب مؤقتا ، {1} ميجا بايت بشكل دائم. +\n (فقط {2} ميغابايت المتاحة.) نقطة الانطلاق الصوت حذف @@ -1747,7 +1757,8 @@ الدخول عبر الخريطة عرض عند البدء التأثير النسبي - تحميل {0} ملف؟ مساحة التخزين المستخدمة هي {3} مب مؤقتة، {1} مب دائمة. (المساحة المتوفرة هي {2} مب.) + تحميل {0} ملف؟ +\nمساحة التخزين المستخدمة هي {3} مب مؤقتة، {1} مب دائمة. (المساحة المتوفرة هي {2} مب.) مسافة المسلك خطأ تحيين القائمة المحلية لPOI. تحيين الPOI @@ -1900,7 +1911,9 @@ أوسماند ليس لديه إذن لاستخدام ذاكرة البطاقة هل تريد حقا حفظ POI بدون تحديد نوعه؟ هناك خيار جديد لتحكم بشكل مرن بالتطبيق عبر لوحة القياس أو القائمة الثابتة. اختيارك يمكن تغييره دائما في إعدادات لوحة القياس. - ملاحة أوسماند دون نت ميزة تجريبية وهي لا تعمل لمسافات تزيد عن 20 كم. خدمة الملاحة حولت مؤقتا إلى CloudMade على الإنترنت. + ملاحة أوسماند دون نت ميزة تجريبية وهي لا تعمل لمسافات تزيد عن 20 كم. +\n +\n خدمة الملاحة حولت مؤقتا إلى CloudMade على الإنترنت. إصدار {0} تثبيت بنجاح ({1}). جار تحميل الإصدار… هل تريد تثبيت أوسماند - {0} من {1} {2} مب ؟ @@ -1973,7 +1986,8 @@ البيانات الصوتية المحددة تالفة بطاقة الذاكرة غير متاحة. \nلن تكون قادرا على رؤية الخرائط أو العثور على أماكن. - بطاقة الذاكرة في وضع القراءة فقط. يمكنك فقط مشاهدة الخريطة المحملة مسبقا ولا يمكنك التحميل من الإنترنت. + بطاقة الذاكرة في وضع القراءة فقط. +\n يمكنك فقط مشاهدة الخريطة المحملة مسبقا ولا يمكنك التحميل من الإنترنت. انعطف يميناً بشكل حاد انعطف يساراً بشكل حاد قم بالدوران وواصل @@ -1982,7 +1996,8 @@ المسار اللاحق للرحلة حساب الجزء الأول فقط من الطريق للرحلات الطويلة. إلغاء - خرائط محلية وملاحة + خرائط محلية +\nوملاحة إنشاء إحداثية POI عدد الصفوف في الدفعة %1$s سيتم حذف POI بمجرد إرسال التعديلات @@ -2107,8 +2122,7 @@ إضافة للمفضلة إضافة إجراء حذف إجراء - هل تريد حذف الإجراء -\n \"%s\" ؟ + هل تريد حذف الإجراء \"%s\" ؟ اسم الإجراء إضافة خطأ إلى OSM عرض مربع حوار الأماكن المفضلة @@ -2165,7 +2179,8 @@ قم بالضغط على الزر لفترة أطوَل ثم اسحبه لتغيير مكانه على الشاشة. معالم العمق البحري تقسيم المسارات آلياً إلى أجزاء بعد كل فراغ - تقصير رمز التموضع المفتوح يُرجى تقديم رمزٍ كامل + تقصير رمز التموضع المفتوح +\n يُرجى تقديم رمزٍ كامل اسم الإجراء السريع مكرر سوف تكون تتمة هذه الرسالة تلقائية في المجال المخصص للتعليق. مجلد جديد @@ -2314,7 +2329,9 @@ بدء مقطع جديدة بعد فارق 6 دقائق، مسار جديد بعد فارق 2 ساعة، أو ملف جديد بعد فارق أطول إذا تغير التاريخ. متوقف مؤقتاً قد يكون المسار طويلا جداً للحساب. يرجى إضافة وجهات وسطى إذا لم يتم العثور على نتيجة خلال 10 دقائق. - أوسماند(توجيهات OSM للتنقل الآلية) تطبيق خريطة وتنقل مع إمكانية الوصول إلى بيانات (OSM) مجاناً وفي جميع أنحاء العالم، وبجودة عالية. استمتع بمستكشف بالصوت والصورة، وعرض POI (نقاط الاهتمام)، إنشاء وإدارة مسارات GPX، استخدام عرض ارتفاع بيانات الخطوط الكنتورية (عن طريق المكون)، اختيار بين نمط القيادة، ركوب الدراجات والمشاة، التعديل على الموقع وغيرها. + أوسماند(توجيهات OSM للتنقل الآلية) تطبيق خريطة وتنقل مع إمكانية الوصول إلى بيانات (OSM) مجاناً وفي جميع أنحاء العالم، وبجودة عالية +\n +\n. استمتع بمستكشف بالصوت والصورة، وعرض POI (نقاط الاهتمام)، إنشاء وإدارة مسارات GPX، استخدام عرض ارتفاع بيانات الخطوط الكنتورية (عن طريق المكون)، اختيار بين نمط القيادة، ركوب الدراجات والمشاة، التعديل على الموقع وغيرها. التنقل عبر GPS \n• يمكنك أن تختار بين وضع دون اتصال (لا رسوم تجوال عندما تكون في الخارج) أو بالإنترنت (أسرع) \n• التوجيه الصوتي بالتفصيل يوجهك طوال الطريق (مسجل أو مدرج) @@ -2365,14 +2382,20 @@ \n• أنتاركتيكا: * \nمعظم البلدان في جميع أنحاء العالم متاحة للتحميل! \nاحصل على برنامج تنقل موثوق به في بلدك - سواءاً في فرنسا، ألمانيا، المكسيك، المملكة المتحدة، إسبانيا، هولندا، الولايات المتحدة الأمريكية، روسيا، البرازيل أو أي دولة أخرى. - أوسماند بلس (توجيهات OSM للملاحة الآلية) تطبيق خريطة وملاحة مع إمكانية الوصول إلى بيانات الموقع (OSM) مجاناً وفي جميع أنحاء العالم، وبجودة عالية. استمتع بالملاحة بصوت والصورة، عرض النقاط المهمة حولك (POI)، وإنشاء وإدارة مسارات GPX باستخدام معلومات عن تصور وعلو الخطوط الكنتورية، خياراً بين القيادة، ركوب الدراجات، وضع المشاة، التعديل على OSM وأكثر من ذلك بكثير. أوسماند بلس هو إصدار للتطبيق مدفوع الأجر. قبل شرائه، ادعم المشروع، مول تطوير الميزات الجديدة واحصل على آخر التحديثات. بعض الميزات الرئيسية: + أوسماند بلس (توجيهات OSM للملاحة الآلية) تطبيق خريطة وملاحة مع إمكانية الوصول إلى بيانات الموقع مجاناً وفي جميع أنحاء العالم، وبجودة عالية. +\n +\nاستمتع بالملاحة بصوت والصورة، عرض النقاط المهمة حولك (POI)، وإنشاء وإدارة مسارات GPX باستخدام معلومات عن تصور وعلو الخطوط الكنتورية، خياراً بين القيادة، ركوب الدراجات، وضع المشاة، التعديل على OSM وأكثر من ذلك بكثير. +\n +\nأوسماند بلس هو إصدار للتطبيق مدفوع الأجر. قبل شرائه، ادعم المشروع، بتمويل لتطوير الميزات الجديدة والحصول على آخر التحديثات. +\n +\n بعض الميزات الرئيسية: الملاحة \n• يعمل على الإنترنت (سريع) أو في وضع غير متصل (لا رسوم تجوال خارج الوطن) \n• توجيه صوتي بالتفصيل (الأصوات المسجلة أو مدرجة) \n• موجه مسار اختياري، عرض اسم الشارع، والوقت المقدر للوصول \n• يدعم نقاط وسيطة خلال مسارك \n• إعادة تلقائية للتوجيه كلما انحرفت عن الطريق -\n• البحث عن الأماكن حسب العنوان، النوع (مثل: مطعم، فندق، محطة وقود، متحف)، أو حسب الإحداثيات الجغرافية +\n• البحث عن الأماكن حسب العنوان، النوع (مثل: مطعم، فندق، محطة وقود، متحف)،أو حسب الإحداثيات الجغرافية عرض الخريطة \n• عرض موقعك والتوجيه \n• محاذاة اختيارية للصورة وفق البوصلة أو توجيه الحركة @@ -2712,14 +2735,14 @@ اختر المدينة أولاً استعادة تطبيق من طرف ثالث - عند التفعيل ستبقى العلامات المضافة من مجموعة إحداثيات أو من نقاط طريق على الخريطة عند اختيار \"علامة مُجتازة\". -\n إذا كانت المجموعة غير نشطة ستختفي العلامات من الخريطة. + عند التفعيل ستبقى العلامات المضافة من مجموعة إحداثيات أو من نقاط طريق على الخريطة عند اختيار \"علامة مُجتازة\". إذا كانت المجموعة غير نشطة ستختفي العلامات من الخريطة. إبقاء العلامات المتجاوزة على الخريطة هناك المزيد من وسائل النقل في هذا الموقف. يرجى إعطاء إذن تحديد الموقع للتطبيق لكي يواصل. شكرا على الرد النقطة أو الطريق غير موجود. - لايوجد نتائج للبحث؟ أخبرنا برأيك + لايوجد نتائج للبحث؟ +\nأخبرنا برأيك زيادة نصف قطر البحث إلى %1$s إرسال استفسار البحث؟ العالم @@ -3233,7 +3256,9 @@ حرك يدك أعلى الشاشة لتشغيلها أثناء التنقل. تحديثات الخريطة الشهرية تحديثات الخريطة كل ساعة - سيتم إرسال استعلام البحث إلى: \"%1$s\" ، بالإضافة إلى موقعك. لا يتم جمع المعلومات الشخصية ، فقط بيانات البحث اللازمة لتحسين البحث. + سيتم إرسال استعلام البحث إلى: \"%1$s\" ، بالإضافة إلى موقعك. +\n +\nلا يتم جمع المعلومات الشخصية ، فقط بيانات البحث اللازمة لتحسين البحث. لامركبة ترام تجنب مركبة الترام لا يوجد حافلات @@ -3257,7 +3282,9 @@ عرض الإحداثيات سياسة الخصوصية ساعدنا في جعل أوسماند أفضل - السماح لأوسماند بجمع بيانات استخدام التطبيقات المجهولة ومعالجتها. نحن لا نجمع أو نخزن بيانات عن موقعك ، أو أي مواقع تقوم بعرضها علي الخريطة. + السماح لـ OsmAnd بجمع ومعالجة بيانات استخدام التطبيق المجهول. لا يتم جمع بيانات حول موقعك أو المواقع التي تعرضها على الخريطة. +\n +\nقم بإعدادها في أي وقت لاحق في \'الإعدادات\' → \'الخصوصية والأمان\'. اختر نوع البيانات التي تريد مشاركتها: الخرائط التي تم تنزيلها الشاشات المزارة @@ -3688,5 +3715,5 @@ تغيير ملف تعريف التطبيق لم يتم العثور على ملفات التعريف المحددة لهذا الإجراء. خريطة عامة للعالم (تفصيلية) - نوع غير مدعوم + نوع غير معتمد \ No newline at end of file From 70354fd8cb17a0d4eff741779faf94e0dc701e5a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Thu, 21 May 2020 04:03:57 +0000 Subject: [PATCH 026/108] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 8.5% (286 of 3341 strings) --- OsmAnd/res/values-nb/strings.xml | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 8557eab8df..6f180742de 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -3513,7 +3513,7 @@ En knapp for å vise eller skjule terrenglag på kartet. Handlinger i bindeleddsmeny Skjult - Hovedhandlinger inneholder kun 4 knapper. + Har kun fire knapper. Hovedhandlinger Du kan kun flytte elementer innenfor denne kategorien. Utvikler-tillegg @@ -3552,7 +3552,7 @@ Legg til/rediger interessepunkt Vis/skjul offentlig transport Legg til profil - En knapp for å vise eller skjule offentlig transport på kartet. + Knapp for vising eller skjuling av offentlig transport på kartet. Direkte-til-punkt Tøm lagret data Inkluder ytterligere data @@ -3611,4 +3611,17 @@ Gjenopprett forvalgt elementrekkefølge Fant ingen slike profiler. Verdensoversiktskart (detaljert) + Sjekk og del detaljert loggføring fra programmet + Bruk systemets skjermtidsavbrudd + Programtillegg av + Ingen omregning + Angi et navn for profilen + Velg data å importere. + Du kan lese mer om løyper i %1$s. + Omarranger eller skjul elementer fra %1$s. + Elementer under dette punktet er inndelt av en skillelinje. + Skjuling av innstillinger tilbakestiller dem til forvalg. + Skigåing + Ustøttet type + Velg hvor mye avviksdistanse som skal utløse omruting. \ No newline at end of file From 47fe09a05b33a931e5478a7d139e35691a8b3645 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Fri, 22 May 2020 15:39:09 +0000 Subject: [PATCH 027/108] Translated using Weblate (Basque) Currently translated at 97.2% (3249 of 3341 strings) --- OsmAnd/res/values-eu/strings.xml | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/OsmAnd/res/values-eu/strings.xml b/OsmAnd/res/values-eu/strings.xml index bea71fd6e6..2ac310ee14 100644 --- a/OsmAnd/res/values-eu/strings.xml +++ b/OsmAnd/res/values-eu/strings.xml @@ -3632,4 +3632,15 @@ Area honi dagokio: %1$s x %2$s Kolore pertsonalizatua Mapa gehigarriak onartu gabeko ekintza %1$s + Sortu / aldatu POIa + Aparkaleku-posizioak + Gehitu / aldatu gogokoa + Berrezarri lehenetsitako ordena + Itzuli ediziora + Ekintza botoiak hautatutako profilen artean txandakatzen du. + Gehitu profila + Aldatu aplikazioaren profila + Ezin izan dira profil horiek aurkitu. + Munduaren gainbegirada mapa (xehetsua) + Onartu gabeko mota \ No newline at end of file From 9fc0af3a7ea4bd1b3fcf67fc51687cba43a7df09 Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Thu, 21 May 2020 20:29:29 +0000 Subject: [PATCH 028/108] Translated using Weblate (Sardinian) Currently translated at 99.5% (3326 of 3341 strings) --- OsmAnd/res/values-sc/strings.xml | 61 ++++++++++++++++---------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index bdb32f0e7c..01d36698db 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -2034,7 +2034,7 @@ Retzi indicatziones e iscoberi logos noos chene una connessione a ìnternet Retzi pro %1$s Iscàrriga iscarrigamentos de mapas chene lìmites e agiornamentos pro cada chida, cada die o fintzas cada ora. - Costu mensile de s\'abbonamentu. Podes iscantzellare s\'iscritzione tua in Google Play cando boles. + Costu periòdicu de s\'abbonamentu. Lu podes anullare in Google Play cando boles. Donatzione a sa comunidade de OpenStreetMap Parte de sa donatzione tua benit imbiada a sos impreadores chi faghent modìficas in OpenStreetMap. Su costu de iscritzione abarrat su matessi. S\'iscritzione abilitat agiornamentos cada ora, die o chida e sa possibilidade de iscarrigare totu sas mapas chene lìmites. @@ -3137,7 +3137,7 @@ Muda sas impostatziones predefinidas de lestresa Imposta sa lestresa mìnima/màssima Profilu nou - Errore + Serradura arrepente S\'ùrtima sessione de OsmAnd s\'est serrada. Pro praghere agiuda·nos a megiorare OsmAnd cumpartzende su messàgiu de errore. OVNI (UFO) • Profilos de s\'aplicatzione: crea unu profilu personalizadu pro sas netzessidades tuas, cun un\'icona e unu colore personalizados @@ -3487,7 +3487,7 @@ Arbèschida a sas %1$s Custu at a registrare petzi sos puntos medidos cun un\'acuradesa mìnima indicada (in metros/pees, comente benit sinnaladu dae Android pro su chipset tuo). S\'acuradesa si riferit a sa dispersione de movimentos torrados a repìtere, e no est ligada diretamente a sa pretzisione, chi definit canto sa medida tua est a curtzu a sa positzione bera tua. Ripristinende sos valores predefinidos as a torrare a impostare s\'istadu predefinidu a pustis de s\'installatzione. - Sa modalidade de atzessibilidade est disabilitada in su sistema tuo. + Sa modalidade de atzessibilidade est istudada in su sistema Android tuo. Imprea su tempus de isetu de s\'ischermu de su sistema Disabilitadu in sas impostatziones predefinidas. Si OsmAnd est traballende in primu pranu, s\'ischermu non s\'at a mòrrere. \n @@ -3497,7 +3497,7 @@ Deretu a su puntu Issèbera unu nùmene pro su profilu Aberi sas impostatziones - Estensione disabilitada + Estensione istudada S\'estensione est un\'aplicatzione a banda. L\'as a dèpere bogare a banda si non la cheres prus impreare. \n \nS\'estensione at a abarrare in su dispositivu a pustis de b\'àere bogadu OsmAnd. @@ -3505,7 +3505,7 @@ %1$s — %2$s — %3$s Càrculu de s\'àndala Inclue datos additzionales - Su profilu importadu tenet datos additzionales. Incarca in \"Importa\" pro importare sos datos de su profilu ebbia o ischerta sos datos additzionales de importare. + Su profilu importadu tenet datos additzionales. Incarca in \"Importa\" pro importare sos datos de su profilu ebbia, o ischerta sos datos additzionales. Podes ischertare datos additzionales de esportare in paris cun su profilu. Nota: verìfica de lestresa > 0: sa majoria de sos insiemes integrados (sos \"chipsets\") GPS frunit unu valore de lestresa petzi si s\'algoritmu determinat chi ses in movimentu, e perunu si non lu ses. Pro custa resone s\'impreu de s\'impostatzione> 0 in custu filtru, in unu tzertu sensu, impreat su rilevamentu de su movimentu de s\'insieme integradu GPS. Ma, fintzas si non benint filtradas inoghe in su momentu de sa registratzione, impreamus su matessi custa funtzionalidade in s\'anàlisi nostra de sas rastas GPX pro determinare sa distàntzia curreta. Est a nàrrere chi su valore ammustradu in cussu campu est sa distàntzia registrada durante su movimentu. Efetu segundàriu: pro more de su filtru pro acuradesa unos cantos puntos diant pòdere fartare de su totu. A es. in suta de sos pontes, de sos àrbores, intre sos fàbricos artos, o in unas cantas cunditziones metereològicas. @@ -3542,7 +3542,7 @@ Òrdina pro categoria Antàrticu Predefinidu in s\'aplicatzione (%s) - Disabìlita su ri-càrculu de s\'àndala + Perunu ri-càrculu Distàntzia mìnima pro torrare a carculare s\'àndala S\'àndala at a bènnere carculada torra si sa distàntzia dae s\'àndala est prus manna de cussa dislindada Profilu personalizadu @@ -3597,7 +3597,7 @@ Umbraduras de sos rilievos %1$s de %2$s Pistas - Ammustra/cua su terrinu + Ammustra / cua su terrinu Cua su terrinu Ammustra su terrinu Unu butone pro ammustrare o cuare s\'istratu de su terrinu in sa mapa. @@ -3635,7 +3635,7 @@ Cuadu Custos elementos sunt cuados dae su menù, ma sas optziones o sas estensiones rapresentadas ant a sighire a funtzionare. Cuende sas impostatziones las as a torrare a sos istados predefinidos issoro. - Sas \'atziones printzipales\' cuntenent 4 butones ebbia. + Tenet 4 butones ebbia. Atziones printzipales Podes mòere elementos in intro de custa categoria ebbia. Estensione pro sos isvilupadores @@ -3678,7 +3678,7 @@ \n \nPodes amministrare e annullare sos abbonamentos tuos intrende in sas impostatziones de Google Play tuas. Chirca castas de PDI - Cumbina castas de PDI de catogorias diferentes. Incarca su butone pro ischertare totu, incarca s\'ala a manca pro sa seletzione de sas categorias. + Cumbina castas de PDI de catogorias diferentes. Incarchende su butone as a ischertare totu, e s\'ala a manca seletzionat una categoria. %1$s / %2$s Arrastadore de OsmAnd OsmAnd + Mapillary @@ -3692,22 +3692,22 @@ Còmporas de OsmAnd Sa ghia pro sa simbologia de sa mapa. Profilos de navigatzione - • Mapas noas non in lìnia de sas pendèntzias -\n -\n • Peronalizazione intrea de sos preferidos e de sos puntos de coladòrgiu - colores, iconas e formas personalizados -\n -\n • Personaliza s\'oòrdine de sos elementos in su Menù de cuntestu, in Cunfigura mapa e in su Calàssiu -\n -\n • Wikipedia comente un\'istratu a banda in Cunfigura mapa, in ue podes ischertare petzi sas limbas chi cheres -\n -\n • Crea su filtru tuo/sa mapa tua cun sos PDI cun una flessibilidade totale -\n -\n • Optzione pro ripristinare sas impostatziones pro sos profilos personalizados annànghida -\n -\n • Àndalas GPX intreas cun suportu pro sa navigatzione, corsias de tzirculatzione eistrutzione de bortada cumpridas -\n -\n • Mannària de interfache gràfica in sas tauleddas acontzadas -\n + • Mapas noas non in lìnia de sas pendèntzias +\n +\n • Peronalizazione intrea de sos preferidos e de sos puntos de coladòrgiu - colores, iconas e formas personalizados +\n +\n • Personaliza s\'oòrdine de sos elementos in su \"Menù de cuntestu\", in \"Cunfigura mapa\" e in su \"Calàssiu\" +\n +\n • Wikipedia comente un\'istratu a banda in Cunfigura mapa, in ue podes ischertare petzi sas limbas chi cheres +\n +\n • Crea su filtru tuo/sa mapa tua cun sos PDI cun una flessibilidade totale +\n +\n • Optzione pro ripristinare sas impostatziones pro sos profilos personalizados annànghida +\n +\n • Àndalas GPX intreas cun suportu pro sa navigatzione, corsias de tzirculatzione eistrutzione de bortada cumpridas +\n +\n • Mannària de interfache gràfica in sas tauleddas acontzadas +\n \n • Faddinas cun RTL acontzadas \n \n @@ -3715,16 +3715,17 @@ Podes atzèdere a custas atziones incarchende su butone \"%1$s\". Cua su trasportu pùblicu Ammustra su trasportu pùblicu - Ammustra/cua su trasportu pùblicu - Unu butone pro ammustrare o cuare su trasportu pùblicu in sa mapa. - Crea/Modìfica unu PDI + Ammustra / cua su trasportu pùblicu + Butone pro ammustrare o cuare su trasportu pùblicu in sa mapa. + Crea / Modìfica unu PDI Logos de parchègiu Annanghe / Modìfica unu preferidu Riprìstina s\'òrdine predefinidu de sos elementos Torra a modificare - Tocende su butone de atzione as a colare dae unu profilu ischertadu a s\'àteru. + Su butone de atzione faghet colare dae unu profilu ischertadu a s\'àteru. Annanghe unu profilu Càmbia su profilu de s\'aplicatzione - Sos profilos ischertados pro custa atzione non s\'agatant. + Impossìbile a agatare custos profilos. Mapa mundiale generale (a sa minuda) + Casta non suportada \ No newline at end of file From 188484e058db07f49dd84f4cb98bcce4a6dc286c Mon Sep 17 00:00:00 2001 From: Hakuchi Date: Sat, 23 May 2020 21:10:11 +0000 Subject: [PATCH 029/108] Translated using Weblate (German) Currently translated at 100.0% (3804 of 3804 strings) --- OsmAnd/res/values-de/phrases.xml | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-de/phrases.xml b/OsmAnd/res/values-de/phrases.xml index a6795fd120..d497a678d3 100644 --- a/OsmAnd/res/values-de/phrases.xml +++ b/OsmAnd/res/values-de/phrases.xml @@ -319,7 +319,7 @@ Motorradparkplatz Motorradgeschäft Autobahnkreuz - Passstraße + Gebirgspass Multi-Sport Museum Musikinstrumente @@ -2711,8 +2711,8 @@ Hygrometer: nein Datumsanzeige Datumsanzeige: nein - Informationsanzeige für Passagiere: ja - Informationsanzeige für Passagiere: nein + Fahrgastinformationsanzeige: ja + Fahrgastinformationsanzeige: nein Mindestalter Verkehrsspiegel Delegation @@ -3826,4 +3826,5 @@ Grundwasser Rohr Druck + Pumpenzustand: fehlender Arm \ No newline at end of file From 53d990b57966cd0dcd6b92d15d98c389c13b448b Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Thu, 21 May 2020 20:58:31 +0000 Subject: [PATCH 030/108] Translated using Weblate (Sardinian) Currently translated at 99.5% (3785 of 3804 strings) --- OsmAnd/res/values-sc/phrases.xml | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-sc/phrases.xml b/OsmAnd/res/values-sc/phrases.xml index 25187eaf01..1235a11167 100644 --- a/OsmAnd/res/values-sc/phrases.xml +++ b/OsmAnd/res/values-sc/phrases.xml @@ -1248,7 +1248,7 @@ Època istòrica: rennu antigu (2686 – 2181 AC) Època istòrica: primu perìodu intermèdiu (2181 – 2055 AC) Època istòrica: segundu perìodu intermèdiu (1650 – 1550 AC) - "Època istòrica: tertzu perìodu intermèdiu (1069 – 664 AC) " + Època istòrica: tertzu perìodu intermèdiu (1069 – 664 AC) Època istòrica: primu perìodu persianu Època istòrica: perìodu bassu (664 – 332 AC) Època istòrica: segundu perìodu persianu @@ -1912,7 +1912,7 @@ No aztetat cartas pro donos Golden Crown No aztetat cartas Golden Crown - "PRO100 " + PRO100 No aztetat cartas PRO100 Union Card No aztetat Union Card @@ -2955,8 +2955,8 @@ Àrbore de Nadale Pasca de Nadale: perìodu pro s\'eventu Pasca de Nadale: nota - "Pasca de Nadale: oràriu de abertura" - "Pasca de Nadale: positzione" + Pasca de Nadale: oràriu de abertura + Pasca de Nadale: positzione Pasca de Nadale: situ web Libreria pùblica Casta: cabina telefònica @@ -2973,8 +2973,7 @@ Puddu Geladu Sushi - Pische e patatas fritas (Fish and chips) -\n + Pische e patatas fritas (Fish and chips) Frutos de mare Barbecue Ispaghitos (noodles) orientales @@ -3135,8 +3134,7 @@ Shawarma Loteria Pachinko - Machineddas (slot machines) -\n + Machineddas (slot machines) Iscummissas Bingo Integradores alimentares @@ -3723,7 +3721,7 @@ Pamentadore Furru de su pane Ebanista - Tarifa + Càrriga Toeletadura pro animales domèsticos ATM: eja Prelievu de dinare @@ -3788,7 +3786,7 @@ Butega de artìculos pro sa seguresa Tzentru pro su bowling Nùmeru de referèntzia de sa pista - Base pro sa cassa + Base de cassa Tzentru pro sas imbèrghidas in s\'abba SMS Vìdeu @@ -3818,7 +3816,8 @@ Retza de ricàrica de s\'abba potàbile Sutzione Presurizada - Abbas suta de terra + Abba suta de terra Pompa Pressione + Istadu de sa pompa: mancat sa trave \ No newline at end of file From cf264440bcd691188e89ced7caa413fbabaeff8d Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sat, 23 May 2020 18:16:08 +0000 Subject: [PATCH 031/108] Translated using Weblate (Slovak) Currently translated at 92.8% (3533 of 3804 strings) --- OsmAnd/res/values-sk/phrases.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-sk/phrases.xml b/OsmAnd/res/values-sk/phrases.xml index 85066863e3..8293003701 100644 --- a/OsmAnd/res/values-sk/phrases.xml +++ b/OsmAnd/res/values-sk/phrases.xml @@ -1475,13 +1475,13 @@ Oprava elektrických vozidiel Oprava motocyklov Áno - Bez samoobsluhy + Nie Áno Neautomatizované Všetky služby Áno S kefami - Bez autoumyvárne + Nie Čerpacia stanica pre lietadlá Verejná sprcha Muži @@ -3361,7 +3361,7 @@ Antuka Zdroj energie: biomasa Prístup snežným skútrom - "Prístup autobusom" + Prístup autobusom Prístup karavanom Prístup obytným autom Prístup s autom s prívesom From 988b261a6b16ed5d04e01f1eddf6048720b0c8c0 Mon Sep 17 00:00:00 2001 From: Franco Date: Thu, 21 May 2020 22:48:48 +0000 Subject: [PATCH 032/108] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 102 ++++++++++++++------------- 1 file changed, 52 insertions(+), 50 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 836abf832a..f6f12f8258 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -492,7 +492,7 @@ Cálculo sin Internet del segmento de ruta OsmAnd Calcular la ruta OsmAnd para el primer y último segmento de ruta ¿Usar la traza mostrada para la navegación? - Sin ferris/transbordadores + Sin ferris o transbordadores Evitar ferris o transbordadores Desde Android 4.4 (KitKat), la carpeta de almacenamiento antigua (%s) se encuentra en desuso. ¿Copiar todos los archivos de OsmAnd a la nueva ubicación de almacenamiento\? \n Nota 1: Los archivos antiguos permanecerán intactos (pero pueden ser borrados manualmente). @@ -543,7 +543,7 @@ Zoom mínimo URL Elegir existente… - Definir/Editar… + Definir o editar… Información de FPS Región de conducción: EEUU, Europa, Reino Unido, Asia u otras. Región de conducción @@ -698,7 +698,7 @@ GPX No se encontraron edificios. Buscar ciudades incrementalmente - Buscar más pueblos/códigos postales + Buscar más pueblos o códigos postales Elige cuando mostrar mapas viales: Mapas viales Ejecutar aplicación en modo seguro (usando código de Android, más lento, en vez del nativo). @@ -1148,7 +1148,7 @@ Elige que altavoz reproducirá indicaciones por voz. Audio de llamada telefónica (para altavoces estéreos con Bluetooth) Notificación auditiva - Audio de multimedia/navegación + Audio de multimedia o navegación La aplicación no puede descargar la capa del mapa «%1$s», reinstalarla podría ayudar. Ajustar transparencia de la capa superpuesta. Transparencia de superposición @@ -2038,7 +2038,7 @@ Obtenga descargas ilimitadas de mapas, añadiendo actualizaciones semanales, diarias o incluso por hora. Descargas ilimitadas de mapas, actualizaciones y complemento de Wikipedia. Obtener - Suscripción mensual. Puedes cancelarlo en cualquier momento en Google Play. + La suscripción se cobra por el período elegido. Puedes cancelarlo en cualquier momento en Google Play. Donaciones a la comunidad de OSM Parte de tu donación se envía a los colaboradores de OSM. El costo de la suscripción sigue siendo la misma. La suscripción permite actualizaciones cada hora, día o semana y descargas ilimitadas para los mapas de todo el mundo. @@ -2147,10 +2147,10 @@ Nombre de la acción rápida duplicado Un botón que muestra u oculta los puntos favoritos en el mapa. Un botón que muestra u oculta los PDI en el mapa. - Mostrar/ocultar Favoritos + Mostrar u ocultar Favoritos Mostrar Favoritos Ocultar Favoritos - Mostrar/ocultar PDI + Mostrar u ocultar PDI Mostrar %1$s Ocultar %1$s Añadir una categoría @@ -2466,10 +2466,10 @@ Máx/Min Min/Máx Rosa translúcido - Pausar/reanudar navegación + Pausar o reanudar navegación Un botón que pausa o reanuda la navegación. Mostrar diálogo «Navegación finalizada» - Iniciar/parar navegación + Iniciar o parar navegación Un botón que inicia o detiene la navegación. Tiempo del búfer para el seguimiento en línea Indica el tiempo que el búfer mantendrá los sitios para enviar sin conexión @@ -2660,7 +2660,7 @@ Copiar nombre de ubicación/PDI Ubicación sin nombre Mostrar notas de OSM cerradas - Mostrar/ocultar notas de OSM en el mapa. + Mostrar u ocultar notas de OSM en el mapa. GPX - adecuado para exportar a JOSM u otros editores OSM. OSC - adecuado para exportar a OSM. Archivo GPX @@ -2919,7 +2919,7 @@ Tipos de caminos Bajar en Esperar en la parada - Mostrar/ocultar trazas GPX + Mostrar u ocultar trazas GPX Un botón que muestra u oculta las trazas GPX elegidas en el mapa. Ocultar trazas GPX Mostrar trazas GPX @@ -2960,7 +2960,7 @@ Hormigón Adoquín Empedrado (adoquín) - Pavimento intertrabado / Adoquín prefabricado + Pavimento intertrabado o adoquín prefabricado Canto rodado Piedra Metal @@ -2977,16 +2977,16 @@ Muy horrible Intransitable Autopista - Carretera/ruta estatal + Carretera o ruta estatal Carretera principal Calle residencial Vía de servicio - Vereda/Acera + Vereda o acera Camino rural Camino ecuestre Escalera Sendero - Ciclovía/Bicisenda + Ciclovía o bicisenda Indefinido Lea más sobre el cálculo de las rutas de OsmAnd en nuestro blog. La navegación en transporte público se encuentra actualmente en fase de pruebas beta, se esperan errores e imprecisiones. @@ -3013,7 +3013,7 @@ Evitar trenes Sin subterráneos Evitar subterráneos y trenes ligeros - Sin ferris/transbordadores + Sin ferris o transbordadores Evitar ferris o transbordadores • Mostrar el tiempo entre transbordos en transporte público \n @@ -3106,9 +3106,9 @@ Cambia el zoom del mapa desplazando la rueda hacia arriba y abajo. La tecla «Escape» retrocede a la aplicación WunderLINQ. Controlar con WunderLINQ Añadir al menos un elemento a la lista en los ajustes de «Acción rápida» - Esquí alpino/de descenso + Esquí alpino o de descenso Pistas de esquí alpino o de descenso y acceso a remontes mecánicos. - Esquí de travesía/nórdico + Esquí de travesía o nórdico Senderos para esquí nórdico o de travesía. Esquí de travesía Rutas para esquí de travesía. @@ -3367,11 +3367,11 @@ Un botón que muestra u oculta las curvas de nivel en el mapa. Mostrar curvas de nivel Ocultar curvas de nivel - Mostrar/ocultar curvas de nivel + Mostrar u ocultar curvas de nivel Un botón que muestra u oculta el sombreado de las colinas en el mapa. Mostrar el sombreado Ocultar el sombreado - Mostrar/ocultar el sombreado + Mostrar u ocultar el sombreado Imposible iniciar el motor de habla sintetizada. Simular la ubicación usando una traza GPX grabada. Exportar perfil @@ -3424,7 +3424,7 @@ Icono, color y nombre Editar la lista de perfiles Perfil marcado - Al pulsar en «%1$s», serán descartados todos los cambios. + Al pulsar en «%1$s», se descartan todos los cambios. Restablecer todos los ajustes del perfil a los valores predefinidos de la instalación. ¿Restablecer todos los ajustes del perfil\? %1$s %2$s @@ -3494,7 +3494,7 @@ Atardecer a las %1$s Amanecer a las %1$s Restablecer al valor predefinido, restablecerá el orden de clasificación al estado predefinido después de la instalación. - Modo de accesibilidad desactivado en su sistema. + El modo de accesibilidad se encuentra desactivado en el sistema. Usar el tiempo de espera de la pantalla del sistema Desactivado de forma predefinida, si OsmAnd se ejecuta en primer plano, la pantalla se mantendrá encendida. \n @@ -3538,11 +3538,11 @@ %1$s → %2$s → %3$s Enrutamiento Incluir datos adicionales - El perfil importado contiene datos adicionales. Pulsa en «Importar» para importar sólo datos de perfil o marca datos adicionales para importar. + El perfil importado contiene datos adicionales. Pulsa en «Importar» para importar sólo datos de perfil o marca datos adicionales. Puedes marcar datos adicionales para exportar junto con el perfil. Antártida Aplicación predefinida (%s) - Desactivar el recálculo + Sin recálculo Distancia mínima para recalcular la ruta La ruta será recalculada si la distancia a la ruta es mayor que el parámetro especificado Perfil personalizado @@ -3595,7 +3595,7 @@ Permite ver el sombreado o el mapa de pendientes. Puedes leer más sobre estos tipos de mapas en nuestro sitio. Sombreado Pendientes - Mostrar/ocultar terreno + Mostrar u ocultar terreno Ocultar terreno Mostrar terreno Un botón que muestra u oculta la capa del terreno en el mapa. @@ -3618,9 +3618,9 @@ No se pudo escribir en «%1$s». No se pudo importar desde «%1$s». Cambios aplicados al perfil «%1$s». - Personaliza la cantidad de elementos en el menú lateral, la configuración del mapa y el menú contextual. + Personaliza la cantidad de elementos en el «Menú lateral», «Configuración del mapa» y «Menú contextual». \n -\nPuedes desactivar los complementos no utilizados, para ocultar todos sus controles desde «%1$s». +\nDesactiva los complementos no utilizados y oculta todos sus controles en «%1$s». Elementos del menú lateral y menú contextual Personalizar interfaz de usuario Menú lateral @@ -3631,7 +3631,7 @@ Oculto Estos elementos no se muestran en el menú, pero las opciones o complementos que representan seguirán funcionando. Ocultar los ajustes, los restablece a su estado original. - Las «Acciones principales» sólo contienen 4 botones. + Sólo contiene 4 botones. Acciones principales Sólo puedes mover objetos dentro de esta categoría. Complemento de desarrollador @@ -3676,13 +3676,13 @@ Mapas adicionales Acción «%1$s» no admitida %1$s / %2$s - El pago será cargado a la cuenta de Google Play al confirmar la compra. -\n -\nLa suscripción se renueva automáticamente a menos que se cancele antes de la fecha de renovación. La cuenta será cargada por el período de renovación (mes/trimestre/año) sólo en la fecha de renovación. -\n + El pago será cargado a la cuenta de Google Play al confirmar la compra. +\n +\nLa suscripción se renueva automáticamente a menos que se cancele antes de la fecha de renovación. Se le cobrará a su cuenta el período de renovación (mes/trimestre/año) sólo en la fecha de renovación. +\n \nPuedes administrar y cancelar las suscripciones accediendo a los ajustes de Google Play. Buscar por tipos de PDI - Combina tipos de PDI de diferentes categorías. Pulsa «Alternar» para marcar todo, pulsa el lado izquierdo para elegir una categoría. + Combina tipos de PDI de diferentes categorías. Pulsa «Alternar» para marcar todo y el lado izquierdo para elegir una categoría. OsmAnd Tracker OsmAnd + Mapillary Acción rápida @@ -3693,40 +3693,42 @@ Favoritos Suscripción - OsmAnd Live Compras de OsmAnd - La guía para la simbología de un mapa + La guía para la simbología de un mapa. Perfiles de navegación • Nuevos mapas sin conexión de las pendientes -\n +\n \n • Personalización más completa de los favoritos y puntos de referencia GPX (colores personalizados, iconos, formas) -\n -\n • Nueva personalización en el orden de los elementos en Configurar mapa, menú contextual y menú lateral -\n +\n +\n • Personalización en el orden de los elementos en «Configurar mapa», «Menú contextual» y «Menú lateral» +\n \n • Wikipedia ahora se visualiza como una capa separada en Configurar mapa, elige sólo los idiomas necesarios -\n -\n • Crea tu propio filtro/mapas de puntos de interés, con total flexibilidad -\n +\n +\n • Crea tus propios filtros o mapas de puntos de interés, con total flexibilidad +\n \n • Se añadieron opciones para restablecer los ajustes de los perfiles personalizados -\n +\n \n • Las rutas GPX para la navegación, ahora admiten los carriles de tráfico y completan las instrucciones de giro -\n +\n \n • Se ha corregido el tamaño de la interfaz en las tabletas -\n +\n \n • Se corrigieron los errores con RTL \n \n Puedes acceder a estas acciones pulsando el botón «%1$s». Ocultar transporte público Mostrar transporte público - Mostrar/ocultar transporte público - Un botón que muestra u oculta el transporte público en el mapa. - Crear/Editar PDI + Mostrar u ocultar transporte público + Botón que muestra u oculta el transporte público en el mapa. + Crear o editar PDI Puestos de estacionamiento - Añadir / Editar favorito + Añadir o editar favorito Restaurar el orden de los elementos predefinidos Volver a la edición Reanudar - Al pulsar el botón de acción se cambiará entre los perfiles elegidos. + El botón de acción alterna entre los perfiles elegidos. Añadir perfil Cambiar perfil de la aplicación - No se encontraron los perfiles marcados para esta acción. + No se pudo encontrar ninguno de estos perfiles. + Mapa mundial general (detallado) + Tipo no admitido \ No newline at end of file From 18ac1e59a4892d1a7df8fd652e4dce801146f793 Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Wed, 20 May 2020 22:00:21 +0000 Subject: [PATCH 033/108] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 2891e50a39..00fae9b1f8 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3712,4 +3712,5 @@ Pôr do Sol: %2$s Alterar perfil do aplicativo Não foi possível encontrar nenhum desses perfis. Mapa geral do mundo (detalhado) + Tipo não suportado \ No newline at end of file From afb835f78fd80255c12494d7b1c152294d58f0e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Fri, 22 May 2020 17:46:48 +0000 Subject: [PATCH 034/108] Translated using Weblate (Turkish) Currently translated at 62.5% (2380 of 3804 strings) --- OsmAnd/res/values-tr/phrases.xml | 37 +++++++++++++++++++++++++++++--- 1 file changed, 34 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-tr/phrases.xml b/OsmAnd/res/values-tr/phrases.xml index 633992c85f..9a59a9adeb 100644 --- a/OsmAnd/res/values-tr/phrases.xml +++ b/OsmAnd/res/values-tr/phrases.xml @@ -1843,7 +1843,7 @@ Demir cevheri Kurşun Linyit - Kireçtaşı + Kireç taşı Mermer Civa Mika @@ -1858,7 +1858,7 @@ Rutil Tuz Kum - Kumtaşı + Kum taşı Silis Gümüş Kayrak;demir cevheri;bakır @@ -2311,7 +2311,7 @@ Uygarlık: minos Uygarlık: tiahuanaco Dil okulu - Hayvanlara izin verilmez + Hayvanlara izin verilmiyor Hayvanlara izin verilir At Köpek @@ -2360,4 +2360,35 @@ Hayır Hayır Hayır + Höyük + Megalit + Basınç + İçme suyu doldurma: hayır + İçme suyu doldurma: evet + İçme suyu doldurma şebekesi + Malzeme: kompozit + Malzeme: mermer + Malzeme: cam + Malzeme: alüminyum + Malzeme: kireç taşı + Malzeme: toprak + Malzeme: granit taşı + Malzeme: plastik + Malzeme: tunç + Malzeme: metal, ahşap + Malzeme: kum taşı + Malzeme: kaya + Malzeme: tuğla + Malzeme: taş + Malzeme: çelik + Malzeme: beton + Malzeme: metal + Tür: arma + Tarihi taş + Atlara izin veriliyor + Malzeme: güçlendirilmiş beton + Malzeme: ahşap + Tür: uzlaşma haçı + Atlara izin verilmiyor + Mutfak \ No newline at end of file From 9e18266b2fdd773d76980cda1a0888f39ed355a9 Mon Sep 17 00:00:00 2001 From: Rami Lehtinen Date: Thu, 21 May 2020 19:10:47 +0000 Subject: [PATCH 035/108] Translated using Weblate (Finnish) Currently translated at 38.9% (1480 of 3804 strings) --- OsmAnd/res/values-fi/phrases.xml | 36 ++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) diff --git a/OsmAnd/res/values-fi/phrases.xml b/OsmAnd/res/values-fi/phrases.xml index 9a55a6806b..1f7d639c51 100644 --- a/OsmAnd/res/values-fi/phrases.xml +++ b/OsmAnd/res/values-fi/phrases.xml @@ -1458,4 +1458,40 @@ Matalaenergialamput Vesimylly Tavara hissi + Viinikellari + Hautausmaa + Asuntovaunualue + Kello + Internet-yhteys: palvelu + Serbian ortodoksinen + Seitsemännen päivän adventistit + Metsästysmaja + Huoneisto + Alppimaja + Juna (nähtävyys) + Karuselli + Historiallinen laiva + Linnoitus + Taistelukenttä + Pöytätennis + Luistelu + Rullaluistelu + Voimistelu + Kroketti + Kanootti + Jousiammunta + Hevosrata + Juoksurata + Veroneuvojan toimisto + Notaari + Kansalaisjärjestö + Asianajaja + Kuntoutus + Kätilö + Hoitokoti + Tulli + Eläkerahasto + Suurlähetystö + Siilo + Tuulimylly \ No newline at end of file From 37962596f885b8630db4381a2d5ed46e951d8dad Mon Sep 17 00:00:00 2001 From: Verdulo Date: Wed, 20 May 2020 23:02:35 +0000 Subject: [PATCH 036/108] Translated using Weblate (Esperanto) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-eo/strings.xml | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 88401a9be8..cbc945ce70 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -2027,7 +2027,7 @@ Havigu senlimigitan elŝutojn de mapoj kaj ĉiusemajnaj, ĉiutagajn kaj eĉ ĉiuhorajn ĝisdatigojn. Senlimigitaj map-elŝutoj, ĝisdatigoj kaj kromprogramo Vikipedio. Mejloj/metroj - Abon-pagoj prenataj ĉiumonate. Iam ajn rezignebla per Google Play. + La abon‑pago estos prenata por la elektita periodo. Vi ĉiam povos rezigni ĝin en Google Play. Donacoj por la OSM‑komunumo Parto de viaj donacoj estas sendata OSM‑kontribuantoj. La abonpago estas la sama. Abonoj ebligas al vi ĉiuhorajn, ĉiutagajn aŭ ĉiusemajnajn ĝisdatigojn kaj senlimigitajn elŝutaĵojn de mapoj de la tuta mondo. @@ -3483,7 +3483,7 @@ Ŝanĝi ordigon de la listo, kaŝi malnecesajn kategoriojn. Vi povas enporti aŭ elporti ĉiujn ŝanĝojn kun profiloj. Vi povas aldoni novan propran kategorion per elekti kelka(j)n bezonata(j)n kategorio(j)n. Per restarigi implicitajn agordojn, ordigo de elementoj revenos al la postinstalada stato. - Alirebleca reĝimo estas malaktivigita en via sistemo. + Alirebleca reĝimo malaktivigita en Android. Malŝalti ekranon laŭ sistemaj agordoj Implicite neaktiva, se OsmAnd laboras malfone, la ekrano ne malŝaltos aŭtomate. \n @@ -3531,7 +3531,7 @@ Vi povas elekti kromajn datumojn por elporti kune kun la profilo. Antarkto Implicita valoro (%s) - Malaktivigi rekalkulon + Sen rekalkulado Minimuma distanco por rekalkuli kurson Kurso estos rekalkulita se la distanco estos pli granda ol tiu ĉi valoro Propra profilo @@ -3617,9 +3617,9 @@ Vi povas movi elementojn nur ene tiu ĉi kategorio. Programista kromprogramo Elementoj - Alĝustigi kaj kaŝi elementojn en la (maldekstra) tirmenuo, menuo “agordi mapon” kaj kunteksta menuo de mapo. -\n -\nVi povas malaktivigi neuzatajn kromprogramojn por kaŝi ĉiujn iliajn rilatajn butonojn: %1$s. + Alĝustigi kaj kaŝi elementojn en la (maldekstra) tirmenuo, menuo “agordi mapon” kaj kunteksta menuo de mapo. +\n +\nEblas malaktivigi neuzatajn kromprogramojn por kaŝi ĉiujn iliajn rilatajn butonojn: %1$s. Elementoj de tirmenuo, kunteksta menuo, ktp. Alĝustigi fasadon Tirmenuo @@ -3717,4 +3717,5 @@ Ŝanĝi aplikaĵan profilon Ne trovis tiajn profilojn. Fundamenta mapo de mondo (detala) + Nesubtenata speco \ No newline at end of file From 5664219ba09dbda14b57cd99b7795b69b7d6f1a5 Mon Sep 17 00:00:00 2001 From: Osoitz Date: Fri, 22 May 2020 15:36:33 +0000 Subject: [PATCH 037/108] Translated using Weblate (Basque) Currently translated at 100.0% (3804 of 3804 strings) --- OsmAnd/res/values-eu/phrases.xml | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-eu/phrases.xml b/OsmAnd/res/values-eu/phrases.xml index 8bef83a950..1802a8843b 100644 --- a/OsmAnd/res/values-eu/phrases.xml +++ b/OsmAnd/res/values-eu/phrases.xml @@ -2187,10 +2187,10 @@ Konponketarik ez Gailu elektrikoen konponketa Motorren konponketa - Autozerbitzurik ez + Ez Automatizatu gabea Zerbitzu osoa - Kotxe-garbiketa: ez + Ez Komun publikoa Gizonezkoa Gizonezkoentzat debekatua @@ -3807,4 +3807,10 @@ Trabatzea Ur maila: batezbestekotik behera Ur maila: batezbestekotik gora + Bonbaren egora: Habea faltan + Xurgatzea + Presiopean + Lurrazpiko ura + Hodia + Presioa \ No newline at end of file From 15286702c8cbaa4eefe0a1b46ad5dc7c4a3a59a1 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Thu, 21 May 2020 05:07:59 +0000 Subject: [PATCH 038/108] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 50 +++++++++++++++------------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 1a3fdbe2c9..f246ea92d1 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -80,6 +80,7 @@ \n- 全球離線向量圖資 \n- 直接由手機下載各國或區域圖資 \n- 可疊加不同的多種地圖層於自訂的透明度,如 GPX 或導航軌跡、興趣點、我的收藏、等高線、大眾運輸停靠站 +\n \n- 離線查詢地址、場所(POI) \n- 中程距離的離線路線 \n- 汽車、自行車、步行模式有多種選項: @@ -1196,8 +1197,7 @@ POI 覆蓋標籤 在導航期間顯示縮放按鈕。 顯示縮放按鈕 - - 線上 OSM 地圖的分類與影像。 + 線上 OSM 地圖的分類與影像。 按距離排序 按名稱排序 先長按來指定 GPX 檔案。 @@ -1478,7 +1478,7 @@ 照片 模擬您的位置 緯度 %1$s -經度 %2$s +\n經度 %2$s 常見的問題,最近的更改以及其它。 導航設定 一般設定 @@ -1868,7 +1868,7 @@ 啟動地圖標記功能。 移除所有的活動標記嗎? 清除地圖標記歷史記錄嗎? - 活動標記 + 活躍標記 地圖標記 地圖標記 新增所有的標點到地圖標記嗎? @@ -1988,7 +1988,7 @@ 鄰里 類別 郵遞區號 - "透過 OsmAnd 分享" + 透過 OsmAnd 分享 索布語 (上游) 返回查詢 自「歷程」移除已選取的項目嗎? @@ -2164,7 +2164,7 @@ 在畫面中央新增 POI 的按鈕。 打開位置編碼(OLC) 無效的 OLC - +\n 停用或啟用導航時的語音導引的開關。 在畫面中央新增停車位置的按鈕。 快速動作已重新命名為 %1$s 以避免重複。 @@ -2175,9 +2175,9 @@ 地圖底層變更為「%s」。 動作名稱 簡短 OLC -請提供完整的編碼 +\n請提供完整的編碼 有效完整的 OLC -代表區域:%1$s x %2$s +\n代表區域:%1$s x %2$s 用於翻閱下方列表的按鈕。 自動分割錄製之後的間隙 如果日期已更改,開始新區段在6分鐘後的間隔,新軌跡在2小時後的間隔,或新檔案在更長的間隔之後。 @@ -2294,21 +2294,23 @@ \n享有語音和視覺的導航,檢視 POI(興趣點),建立和管理 GPX 軌跡,使用視覺化的等高線和海拔資訊(透過外掛元件),能在汽車駕駛、騎自行車和步行模式之間選擇、OSM 編輯和更多。 GPS 導航 \n• 您可以在離線(當您在國外時就不需要國際漫遊費用了)或連線(快速)兩種模式間選擇 -\n• 轉向建議(turn by turn)語音導航(真人和合成語音) -\n• 當您偏離了行駛路線,重建改道規劃 -\n• 車道導引、街道名稱和預計抵達時間會有一路的幫助 -\n• 為了讓您的行程安全,有日/夜模式自動切換 -\n• 顯示車速限制,如果超速了則可以獲得提醒 +\n• 轉向建議語音導航(真人和合成語音) +\n• 當您偏離了行駛路線時將會重新計算路線 +\n• 車道導引、街道名稱和預計抵達時間將會一路陪伴您 +\n• 為了讓您的旅程更安全,有日/夜模式自動切換 +\n• 顯示速度限制,如果超速了則會提醒您 \n• 依您的速度調整地圖縮放 -\n• 按照地址、類別(例如:停車場、餐廳、旅店、加油站、博物館)或地理坐標搜尋目的地 -\n• 支援中轉點於您的旅程 -\n• 錄製自己的或上傳一個 GPX 軌跡並跟隨它 +\n• 按照地址、類別(例如:停車場、餐廳、旅店、加油站、博物館)或地理座標搜尋目的地 +\n• 支援在您的旅程中加入中轉點 +\n• 錄製自己的或上傳一個 GPX 軌跡並跟隨它 +\n 使用 OSM 和維基百科的資料 \n• 來自世界最好的協作專案所得的高品質資訊 \n• OSM 資料可用在每個國家或地區 \n• 維基百科 POI 卓越的觀光景點 \n• 直接從應用程式,無限制的免費下載 -\n• 密集的離線向量地圖更新,至少每月一次 +\n• 密集的離線向量地圖更新,至少每月一次 +\n \n• 可在完整的區域資料還是只有公路網之間選擇(舉例來說:整個日本就有 700 MB 而公路網部分僅有 200 MB) 導航 \n• 您可以在離線(當您在國外時就不需要國際漫遊費用了)或連線(快速)兩種模式間選擇 @@ -2331,11 +2333,12 @@ 地圖 \n• 顯示您週遭的 POI(興趣點) \n• 調整地圖到您的移動方向(或羅盤) -\n• 顯示的位置和您正在觀看的方向 +\n• 顯示的位置和您正在觀看的方向 \n• 分享您的位置,讓您的朋友能找到您 \n• 保存您最重要的地點於我的收藏 \n• 允許您選擇怎樣在地圖上顯示名稱:使用英文、裝置端或語言的拼寫 -\n• 顯示專用的線上地圖圖磚、衛星照片(來自 Bing)、不同的疊加層如旅遊/導航 GPX 軌跡以及可自定透明度的附加層 +\n• 顯示專用的線上地圖圖磚、衛星照片(來自 Bing)、不同的疊加層如旅遊/導航 GPX 軌跡以及可自訂透明度的額外圖層 +\n 自行車 \n• 在地圖找到自行車道 \n• GPS 導航在自行車模式下,使用自行車道構建您的路線 @@ -2367,14 +2370,14 @@ \n• 地圖會顯示您的步行和登山健行路徑 \n• 維基百科以您喜好的語言在市區旅遊中可以告訴您很多事 \n• 大眾運輸停靠站(公共汽車、電車、火車),包括路線名稱,有助於在新的城市裡導航 -\n• GPS 導航在行人模式下,使用步行路徑構建您的路線 -\n• 上傳並且跟隨 GPX 路線或著記錄和分享您自己的路線 +\n• GPS 導航在行人模式下,使用步行路徑構建您的路線 +\n• 上傳並且跟隨 GPX 路線或著記錄和分享您自己的路線 +\n OsmAnd+ (OSM Automated Navigation Directions) 是一個地圖和導航應用程式,可以免費存取全球性且高品質的 OSM 圖資。 \n享有語音和視覺的導航、檢視 POI(興趣點)、建立和管理 GPX 軌跡、使用視覺化的等高線和海拔資訊,能在汽車駕駛、騎自行車和步行模式之間選擇、OSM 編輯和更多。 \n \nOsmAnd+ 是 OsmAnd 的付費版本,透過購買這個應用程式來資助開發新功能,並收到最新的更新。 \n -\n \n一些主要特點: 用於速度控制自動縮放開關的按鈕。 概要 @@ -2754,7 +2757,7 @@ OsmAnd 團隊 重新啟動應用程式 顯示圖片 - "您已取消您的 OsmAnd Live 訂閱" + 您已取消您的 OsmAnd Live 訂閱 恢復訂閱以繼續使用所有的功能: 根據您已存書籤的文章,建議您去下載下方的地圖: 您需要的地圖 @@ -3716,4 +3719,5 @@ 變更應用程式設定檔 找不到任何這類的設定檔。 全球地圖總覽(詳細) + 不支援的類型 \ No newline at end of file From 813932c86cde1aab744d61bcf23d462afa0149ab Mon Sep 17 00:00:00 2001 From: Hakuchi Date: Sat, 23 May 2020 21:37:45 +0000 Subject: [PATCH 039/108] Translated using Weblate (German) Currently translated at 100.0% (267 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/de/ --- OsmAnd-telegram/res/values-de/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd-telegram/res/values-de/strings.xml b/OsmAnd-telegram/res/values-de/strings.xml index 9b4b7776df..5d9f88fb35 100644 --- a/OsmAnd-telegram/res/values-de/strings.xml +++ b/OsmAnd-telegram/res/values-de/strings.xml @@ -18,7 +18,7 @@ Standort teilen als Kontakte und Gruppen, die ihren Standort mit Ihnen teilen. Aus OsmAnd Tracker abmelden\? - "Name " + Name Nach Entfernung Nach Namen Nach Gruppe From 87f95b230f1d8e80b19ae01f5b8dbde123f46a09 Mon Sep 17 00:00:00 2001 From: sonora Date: Sun, 24 May 2020 10:42:08 +0200 Subject: [PATCH 040/108] string improvements --- OsmAnd/res/values-de/strings.xml | 2 +- OsmAnd/res/values/strings.xml | 16 ++++++++-------- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 6044f488de..83ba9689b7 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -3483,7 +3483,7 @@ Lon %2$s System-App verwenden Auslöseton der Kamera Durch das Zurücksetzen auf die Standardeinstellung wird die Sortierung auf den Standardzustand nach der Installation zurückgesetzt. - Der Zugänglichkeitsmodus ist in Ihrem Android ausgeschaltet. + Einstellung \'Eingabehilfe\' ist in Ihrem Android System ausgeschaltet. Zeitlimit für den Systembildschirm verwenden Standardmäßig deaktiviert. Wenn OsmAnd im Vordergrund läuft, wird der Bildschirm nicht ausgeblendet. \n diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index d2bb89400e..d652340ae7 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -200,18 +200,18 @@ • Added Antarctica map\n\n Copy coordinates - Reset to default will reset sort order to the default state after installation. - Use system screen timeout - Disabled by default, if OsmAnd running on foreground, the screen doesn’t time out.\n\nIf enabled OsmAnd will use system timeout settings. - Accessibility mode turned off in your Android. + \'Reset to default\' will reinstate the sort order to the installation default. + Use the system screen timeout + Disabled by default: While OsmAnd is running in the foreground, the screen will not time out.\n\nIf enabled, OsmAnd will use the system timeout setting. + Accessibility mode is turned off in your Android system. Rearrange categories - Change the sort order of the list, hide unnecessary categories. You can import or export all changes with profiles. - You can add a new custom category by selecting one or a few needed categories. + Change the list sort order, hide categories. You can import or export all changes with profiles. + You can add a new custom category by selecting one or more categories. Available Add custom category Show only at night - All plugin settings restored to default state. - All profile settings restored to default state. + All plugin settings restored to default. + All profile settings restored to default. %1$s/%2$s Sunset at %1$s Sunrise at %1$s From ff20409fee51aa30ebbb81252d8a7d4bc106dc62 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 15:01:43 +0200 Subject: [PATCH 041/108] Refactor comparator to avoid comparator mistakes (no logical change were made) --- .../java/net/osmand/search/SearchUICore.java | 171 ++++++++++++------ 1 file changed, 111 insertions(+), 60 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java index 89e422ec60..48e85541ee 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java @@ -848,12 +848,119 @@ public class SearchUICore { return json; } } + + private enum ResultCompareStep { + TOP_VISIBLE, + UNKNOWN_PHRASE_MATCH_WEIGHT, + FOUND_WORD_COUNT, + SEARCH_DISTANCE_IF_NOT_BY_NAME, + COMPARE_FIRST_NUMBER_IN_NAME, + COMPARE_DISTANCE_TO_PARENT_SEARCH_RESULT, // makes sense only for inner subqueries + COMPARE_BY_NAME, + COMPARE_BY_DISTANCE, + AMENITY_LAST_AND_SORT_BY_SUBTYPE + ; + + // -1 - means 1st is less (higher) than 2nd + public int compare(SearchResult o1, SearchResult o2, SearchResultComparator c) { + switch(this) { + case TOP_VISIBLE: + boolean topVisible1 = ObjectType.isTopVisible(o1.objectType); + boolean topVisible2 = ObjectType.isTopVisible(o2.objectType); + if (topVisible1 != topVisible2) { + // -1 - means 1st is less than 2nd + return topVisible1 ? -1 : 1; + } + break; + case UNKNOWN_PHRASE_MATCH_WEIGHT: + if (o1.getUnknownPhraseMatchWeight() != o2.getUnknownPhraseMatchWeight()) { + return -Double.compare(o1.getUnknownPhraseMatchWeight(), o2.getUnknownPhraseMatchWeight()); + } + break; + case FOUND_WORD_COUNT: + if (o1.getFoundWordCount() != o2.getFoundWordCount()) { + return -Algorithms.compare(o1.getFoundWordCount(), o2.getFoundWordCount()); + } + break; + case SEARCH_DISTANCE_IF_NOT_BY_NAME: + if (!c.sortByName) { + double s1 = o1.getSearchDistance(c.loc); + double s2 = o2.getSearchDistance(c.loc); + if (s1 != s2) { + return Double.compare(s1, s2); + } + } + break; + case COMPARE_FIRST_NUMBER_IN_NAME: { + String localeName1 = o1.localeName == null ? "" : o1.localeName; + String localeName2 = o2.localeName == null ? "" : o2.localeName; + int st1 = Algorithms.extractFirstIntegerNumber(localeName1); + int st2 = Algorithms.extractFirstIntegerNumber(localeName2); + if (st1 != st2) { + return Algorithms.compare(st1, st2); + } + break; + } + case COMPARE_DISTANCE_TO_PARENT_SEARCH_RESULT: + double ps1 = o1.parentSearchResult == null ? 0 : o1.parentSearchResult.getSearchDistance(c.loc); + double ps2 = o2.parentSearchResult == null ? 0 : o2.parentSearchResult.getSearchDistance(c.loc); + if (ps1 != ps2) { + return Double.compare(ps1, ps2); + } + break; + case COMPARE_BY_NAME: { + String localeName1 = o1.localeName == null ? "" : o1.localeName; + String localeName2 = o2.localeName == null ? "" : o2.localeName; + int cmp = c.collator.compare(localeName1, localeName2); + if (cmp != 0) { + return cmp; + } + break; + } + case COMPARE_BY_DISTANCE: + double s1 = o1.getSearchDistance(c.loc, 1); + double s2 = o2.getSearchDistance(c.loc, 1); + if (s1 != s2) { + return Double.compare(s1, s2); + } + break; + case AMENITY_LAST_AND_SORT_BY_SUBTYPE: { + boolean am1 = o1.object instanceof Amenity; + boolean am2 = o2.object instanceof Amenity; + if (am1 != am2) { + // amenity second + return am1 ? 1 : -1; + } else if (am1 && am2) { + // here 2 points are amenity + Amenity a1 = (Amenity) o1.object; + Amenity a2 = (Amenity) o2.object; + String type1 = a1.getType().getKeyName(); + String type2 = a2.getType().getKeyName(); + int cmp = c.collator.compare(type1, type2); + if (cmp != 0) { + return cmp; + } + + String subType1 = a1.getSubType() == null ? "" : a1.getSubType(); + String subType2 = a2.getSubType() == null ? "" : a2.getSubType(); + cmp = c.collator.compare(subType1, subType2); + if (cmp != 0) { + return cmp; + } + } + break; + } + } + return 0; + } + } public static class SearchResultComparator implements Comparator { private SearchPhrase sp; private Collator collator; private LatLon loc; private boolean sortByName; + public SearchResultComparator(SearchPhrase sp) { this.sp = sp; @@ -865,66 +972,10 @@ public class SearchUICore { @Override public int compare(SearchResult o1, SearchResult o2) { - boolean topVisible1 = ObjectType.isTopVisible(o1.objectType); - boolean topVisible2 = ObjectType.isTopVisible(o2.objectType); - if (topVisible1 != topVisible2) { - // -1 - means 1st is less than 2nd - return topVisible1 ? -1 : 1; - } - if (o1.getUnknownPhraseMatchWeight() != o2.getUnknownPhraseMatchWeight()) { - return -Double.compare(o1.getUnknownPhraseMatchWeight(), o2.getUnknownPhraseMatchWeight()); - } - if (o1.getFoundWordCount() != o2.getFoundWordCount()) { - return -Algorithms.compare(o1.getFoundWordCount(), o2.getFoundWordCount()); - } - if (!sortByName) { - double s1 = o1.getSearchDistance(loc); - double s2 = o2.getSearchDistance(loc); - if (s1 != s2) { - return Double.compare(s1, s2); - } - } - String localeName1 = o1.localeName == null ? "" : o1.localeName; - String localeName2 = o2.localeName == null ? "" : o2.localeName; - int st1 = Algorithms.extractFirstIntegerNumber(localeName1); - int st2 = Algorithms.extractFirstIntegerNumber(localeName2); - if (st1 != st2) { - return Algorithms.compare(st1, st2); - } - double s1 = o1.getSearchDistance(loc, 1); - double s2 = o2.getSearchDistance(loc, 1); - double ps1 = o1.parentSearchResult == null ? 0 : o1.parentSearchResult.getSearchDistance(loc); - double ps2 = o2.parentSearchResult == null ? 0 : o2.parentSearchResult.getSearchDistance(loc); - if (ps1 != ps2) { - return Double.compare(ps1, ps2); - } - int cmp = collator.compare(localeName1, localeName2); - if (cmp != 0) { - return cmp; - } - if (s1 != s2) { - return Double.compare(s1, s2); - } - boolean am1 = o1.object instanceof Amenity; - boolean am2 = o2.object instanceof Amenity; - if (am1 != am2) { - return Boolean.compare(am1, am2); - } else if (am1 && am2) { - // here 2 points are amenity - Amenity a1 = (Amenity) o1.object; - Amenity a2 = (Amenity) o2.object; - String type1 = a1.getType().getKeyName(); - String type2 = a2.getType().getKeyName(); - cmp = collator.compare(type1, type2); - if (cmp != 0) { - return cmp; - } - - String subType1 = a1.getSubType() == null ? "" : a1.getSubType(); - String subType2 = a2.getSubType() == null ? "" : a2.getSubType(); - cmp = collator.compare(subType1, subType2); - if (cmp != 0) { - return cmp; + for(ResultCompareStep step : ResultCompareStep.values()) { + int r = step.compare(o1, o2, this); + if(r != 0) { + return r; } } return 0; From cf28032858a8684c6ea4723e108d4705e738f501 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 15:36:41 +0200 Subject: [PATCH 042/108] Refactor tests --- .../search/SearchUICoreGenericTest.java | 111 ++++++ ...hCoreUITest.java => SearchUICoreTest.java} | 344 ++++++++---------- 2 files changed, 258 insertions(+), 197 deletions(-) create mode 100644 OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreGenericTest.java rename OsmAnd-java/src/test/java/net/osmand/search/{SearchCoreUITest.java => SearchUICoreTest.java} (56%) diff --git a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreGenericTest.java b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreGenericTest.java new file mode 100644 index 0000000000..aa4d7430d6 --- /dev/null +++ b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreGenericTest.java @@ -0,0 +1,111 @@ +package net.osmand.search; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; + +import net.osmand.OsmAndCollator; +import net.osmand.data.LatLon; +import net.osmand.search.SearchUICore.SearchResultCollection; +import net.osmand.search.core.SearchPhrase; +import net.osmand.search.core.SearchResult; +import net.osmand.search.core.SearchSettings; +import net.osmand.util.MapUtils; + +public class SearchUICoreGenericTest { + + + @BeforeClass + public static void setUp() { + SearchUICoreTest.defaultSetup(); + } + + + @Test + public void testDuplicates() throws IOException { + SearchSettings ss = new SearchSettings((SearchSettings)null); + ss = ss.setOriginalLocation(new LatLon(0, 0)); + SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator()); + SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase); + List rs = new ArrayList<>(); + SearchResult a1 = searchResult(rs, phrase, "a", 100); + SearchResult b2 = searchResult(rs, phrase, "b", 200); + SearchResult b1 = searchResult(rs, phrase, "b", 100); + /*SearchResult a3 = */ searchResult(rs, phrase, "a", 100); + cll.addSearchResults(rs, true, true); + Assert.assertEquals(3, cll.getCurrentSearchResults().size()); + Assert.assertSame(a1, cll.getCurrentSearchResults().get(0)); + Assert.assertSame(b1, cll.getCurrentSearchResults().get(1)); + Assert.assertSame(b2, cll.getCurrentSearchResults().get(2)); + } + + @Test + public void testNoResort() throws IOException { + SearchSettings ss = new SearchSettings((SearchSettings)null); + ss = ss.setOriginalLocation(new LatLon(0, 0)); + SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator()); + SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase); + List rs = new ArrayList<>(); + SearchResult a1 = searchResult(rs, phrase, "a", 100); + cll.addSearchResults(rs, false, true); + rs.clear(); + + SearchResult b2 = searchResult(rs, phrase, "b", 200); + cll.addSearchResults(rs, false, true); + rs.clear(); + + SearchResult b1 = searchResult(rs, phrase, "b", 100); + cll.addSearchResults(rs, false, true); + rs.clear(); + + /*SearchResult a3 = */ searchResult(rs, phrase, "a", 100); + cll.addSearchResults(rs, false, true); + rs.clear(); + + Assert.assertEquals(3, cll.getCurrentSearchResults().size()); + Assert.assertSame(a1, cll.getCurrentSearchResults().get(0)); + Assert.assertSame(b2, cll.getCurrentSearchResults().get(1)); + Assert.assertSame(b1, cll.getCurrentSearchResults().get(2)); + + + + } + + + @Test + public void testNoResortDuplicate() throws IOException { + SearchSettings ss = new SearchSettings((SearchSettings)null); + ss = ss.setOriginalLocation(new LatLon(0, 0)); + SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator()); + SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase); + List rs = new ArrayList<>(); + SearchResult a1 = searchResult(rs, phrase, "a", 100); + SearchResult b2 = searchResult(rs, phrase, "b", 200); + SearchResult b1 = searchResult(rs, phrase, "b", 100); + cll.addSearchResults(rs, false, true); + rs.clear(); + /*SearchResult a3 = */ searchResult(rs, phrase, "a", 100); + cll.addSearchResults(rs, false, true); + rs.clear(); + + Assert.assertEquals(3, cll.getCurrentSearchResults().size()); + Assert.assertSame(a1, cll.getCurrentSearchResults().get(0)); + Assert.assertSame(b1, cll.getCurrentSearchResults().get(1)); + Assert.assertSame(b2, cll.getCurrentSearchResults().get(2)); + } + + private SearchResult searchResult(List rs, SearchPhrase phrase, String text, int dist) { + SearchResult res = new SearchResult(phrase); + res.localeName = text; + double d1 = MapUtils.getDistance(0, 0, 0, 1); + res.location = new LatLon(0, dist / d1); + rs.add(res); + return res; + } + + +} diff --git a/OsmAnd-java/src/test/java/net/osmand/search/SearchCoreUITest.java b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java similarity index 56% rename from OsmAnd-java/src/test/java/net/osmand/search/SearchCoreUITest.java rename to OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java index 80d92b7bf1..92af480864 100644 --- a/OsmAnd-java/src/test/java/net/osmand/search/SearchCoreUITest.java +++ b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java @@ -1,34 +1,10 @@ package net.osmand.search; -import net.osmand.OsmAndCollator; -import net.osmand.ResultMatcher; -import net.osmand.binary.BinaryMapIndexReader; -import net.osmand.data.Amenity; -import net.osmand.data.Building; -import net.osmand.data.City; -import net.osmand.data.LatLon; -import net.osmand.data.MapObject; -import net.osmand.data.Street; -import net.osmand.osm.AbstractPoiType; -import net.osmand.osm.MapPoiTypes; -import net.osmand.search.SearchUICore.SearchResultCollection; -import net.osmand.search.SearchUICore.SearchResultMatcher; -import net.osmand.search.core.SearchPhrase; -import net.osmand.search.core.SearchResult; -import net.osmand.search.core.SearchSettings; -import net.osmand.util.Algorithms; -import net.osmand.util.MapUtils; - -import org.json.JSONArray; -import org.json.JSONException; -import org.json.JSONObject; -import org.junit.Assert; -import org.junit.Test; -import org.xmlpull.v1.XmlPullParserException; - import java.io.File; import java.io.FilenameFilter; import java.io.IOException; +import java.io.InputStreamReader; +import java.io.Reader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -36,16 +12,61 @@ import java.util.List; import java.util.Map; import java.util.concurrent.atomic.AtomicInteger; -public class SearchCoreUITest { +import org.json.JSONArray; +import org.json.JSONException; +import org.json.JSONObject; +import org.junit.Assert; +import org.junit.BeforeClass; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.junit.runners.Parameterized; +import org.xmlpull.v1.XmlPullParserException; + +import com.google.gson.Gson; +import com.google.gson.GsonBuilder; + +import net.osmand.OsmAndCollator; +import net.osmand.ResultMatcher; +import net.osmand.binary.BinaryMapIndexReader; +import net.osmand.data.Amenity; +import net.osmand.data.Building; +import net.osmand.data.City; +import net.osmand.data.MapObject; +import net.osmand.data.Street; +import net.osmand.osm.AbstractPoiType; +import net.osmand.osm.MapPoiTypes; +import net.osmand.router.RouteTestingTest; +import net.osmand.router.TestEntry; +import net.osmand.search.SearchUICore.SearchResultCollection; +import net.osmand.search.SearchUICore.SearchResultMatcher; +import net.osmand.search.core.SearchPhrase; +import net.osmand.search.core.SearchResult; +import net.osmand.search.core.SearchSettings; +import net.osmand.util.Algorithms; + +@RunWith(Parameterized.class) +public class SearchUICoreTest { private static final String SEARCH_RESOURCES_PATH = "src/test/resources/search/"; - private static Map enPhrases = new HashMap<>(); - private static Map phrases = new HashMap<>(); + + private File testFile; - static { + public SearchUICoreTest(String name, File file) { + this.testFile = file; + } + + + @BeforeClass + public static void setUp() { + defaultSetup(); + } + + + static void defaultSetup() { MapPoiTypes.setDefault(new MapPoiTypes("src/test/resources/poi_types.xml")); MapPoiTypes poiTypes = MapPoiTypes.getDefault(); - + Map enPhrases = new HashMap<>(); + Map phrases = new HashMap<>(); try { enPhrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/en/phrases.xml")); //phrases = Algorithms.parseStringsXml(new File("src/test/resources/phrases/ru/phrases.xml")); @@ -56,178 +77,29 @@ public class SearchCoreUITest { e.printStackTrace(); } - poiTypes.setPoiTranslator(new MapPoiTypes.PoiTranslator() { - - @Override - public String getTranslation(AbstractPoiType type) { - AbstractPoiType baseLangType = type.getBaseLangType(); - if (baseLangType != null) { - return getTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")"; - } - return getTranslation(type.getIconKeyName()); - } - - @Override - public String getTranslation(String keyName) { - String val = phrases.get("poi_" + keyName); - if (val != null) { - int ind = val.indexOf(';'); - if (ind > 0) { - return val.substring(0, ind); - } - } - return val; - } - - @Override - public String getSynonyms(AbstractPoiType type) { - AbstractPoiType baseLangType = type.getBaseLangType(); - if (baseLangType != null) { - return getSynonyms(baseLangType); - } - return getSynonyms(type.getIconKeyName()); - } - - - @Override - public String getSynonyms(String keyName) { - String val = phrases.get("poi_" + keyName); - if (val != null) { - int ind = val.indexOf(';'); - if (ind > 0) { - return val.substring(ind + 1); - } - return ""; - } - return null; - } - - @Override - public String getEnTranslation(AbstractPoiType type) { - AbstractPoiType baseLangType = type.getBaseLangType(); - if (baseLangType != null) { - return getEnTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")"; - } - return getEnTranslation(type.getIconKeyName()); - } - - @Override - public String getEnTranslation(String keyName) { - if (enPhrases.isEmpty()) { - return Algorithms.capitalizeFirstLetter(keyName.replace('_', ' ')); - } - String val = enPhrases.get("poi_" + keyName); - if (val != null) { - int ind = val.indexOf(';'); - if (ind > 0) { - return val.substring(0, ind); - } - } - return val; - } - }); - } - - @Test - public void testDuplicates() throws IOException { - SearchSettings ss = new SearchSettings((SearchSettings)null); - ss = ss.setOriginalLocation(new LatLon(0, 0)); - SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator()); - SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase); - List rs = new ArrayList<>(); - SearchResult a1 = searchResult(rs, phrase, "a", 100); - SearchResult b2 = searchResult(rs, phrase, "b", 200); - SearchResult b1 = searchResult(rs, phrase, "b", 100); - /*SearchResult a3 = */ searchResult(rs, phrase, "a", 100); - cll.addSearchResults(rs, true, true); - Assert.assertEquals(3, cll.getCurrentSearchResults().size()); - Assert.assertSame(a1, cll.getCurrentSearchResults().get(0)); - Assert.assertSame(b1, cll.getCurrentSearchResults().get(1)); - Assert.assertSame(b2, cll.getCurrentSearchResults().get(2)); - } - - @Test - public void testNoResort() throws IOException { - SearchSettings ss = new SearchSettings((SearchSettings)null); - ss = ss.setOriginalLocation(new LatLon(0, 0)); - SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator()); - SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase); - List rs = new ArrayList<>(); - SearchResult a1 = searchResult(rs, phrase, "a", 100); - cll.addSearchResults(rs, false, true); - rs.clear(); - - SearchResult b2 = searchResult(rs, phrase, "b", 200); - cll.addSearchResults(rs, false, true); - rs.clear(); - - SearchResult b1 = searchResult(rs, phrase, "b", 100); - cll.addSearchResults(rs, false, true); - rs.clear(); - - /*SearchResult a3 = */ searchResult(rs, phrase, "a", 100); - cll.addSearchResults(rs, false, true); - rs.clear(); - - Assert.assertEquals(3, cll.getCurrentSearchResults().size()); - Assert.assertSame(a1, cll.getCurrentSearchResults().get(0)); - Assert.assertSame(b2, cll.getCurrentSearchResults().get(1)); - Assert.assertSame(b1, cll.getCurrentSearchResults().get(2)); - - - + poiTypes.setPoiTranslator(new TestSearchTranslator(phrases, enPhrases)); } - @Test - public void testNoResortDuplicate() throws IOException { - SearchSettings ss = new SearchSettings((SearchSettings)null); - ss = ss.setOriginalLocation(new LatLon(0, 0)); - SearchPhrase phrase = new SearchPhrase(ss, OsmAndCollator.primaryCollator()); - SearchResultCollection cll = new SearchUICore.SearchResultCollection(phrase); - List rs = new ArrayList<>(); - SearchResult a1 = searchResult(rs, phrase, "a", 100); - SearchResult b2 = searchResult(rs, phrase, "b", 200); - SearchResult b1 = searchResult(rs, phrase, "b", 100); - cll.addSearchResults(rs, false, true); - rs.clear(); - /*SearchResult a3 = */ searchResult(rs, phrase, "a", 100); - cll.addSearchResults(rs, false, true); - rs.clear(); - - Assert.assertEquals(3, cll.getCurrentSearchResults().size()); - Assert.assertSame(a1, cll.getCurrentSearchResults().get(0)); - Assert.assertSame(b1, cll.getCurrentSearchResults().get(1)); - Assert.assertSame(b2, cll.getCurrentSearchResults().get(2)); - - - } - - private SearchResult searchResult(List rs, SearchPhrase phrase, String text, int dist) { - SearchResult res = new SearchResult(phrase); - res.localeName = text; - double d1 = MapUtils.getDistance(0, 0, 0, 1); - res.location = new LatLon(0, dist / d1); - rs.add(res); - return res; - } - - @Test - public void testSearchJsons() throws IOException { - final File[] files = new File(SEARCH_RESOURCES_PATH).listFiles(new FilenameFilter() { - @Override - public boolean accept(File dir, String filename) { - return filename.endsWith(".json"); - } - }); - if (files != null) { - for (File f : files) { - testSearchImpl(f); + @Parameterized.Parameters(name = "{index}: {0}") + public static Iterable data() throws IOException { + final File[] files = new File(SEARCH_RESOURCES_PATH).listFiles(); + ArrayList arrayList = new ArrayList<>(); + if (files != null) { + for (File file : files) { + String fileName = file.getName(); + if(fileName.endsWith(".json")) { + String name = fileName.substring(0, fileName.length() - ".json".length()); + arrayList.add(new Object[] {name, file}); + } } } - } + return arrayList; + } - private void testSearchImpl(File jsonFile) throws IOException, JSONException { + @Test + public void testSearchImpl() throws IOException, JSONException { + File jsonFile = testFile; String sourceJsonText = Algorithms.getFileAsString(jsonFile); Assert.assertNotNull(sourceJsonText); Assert.assertTrue(sourceJsonText.length() > 0); @@ -316,6 +188,84 @@ public class SearchCoreUITest { } } + static class TestSearchTranslator implements MapPoiTypes.PoiTranslator { + + private Map enPhrases; + private Map phrases; + public TestSearchTranslator(Map phrases, Map enPhrases) { + this.phrases = phrases; + this.enPhrases = enPhrases; + } + + @Override + public String getTranslation(AbstractPoiType type) { + AbstractPoiType baseLangType = type.getBaseLangType(); + if (baseLangType != null) { + return getTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")"; + } + return getTranslation(type.getIconKeyName()); + } + + @Override + public String getTranslation(String keyName) { + String val = phrases.get("poi_" + keyName); + if (val != null) { + int ind = val.indexOf(';'); + if (ind > 0) { + return val.substring(0, ind); + } + } + return val; + } + + @Override + public String getSynonyms(AbstractPoiType type) { + AbstractPoiType baseLangType = type.getBaseLangType(); + if (baseLangType != null) { + return getSynonyms(baseLangType); + } + return getSynonyms(type.getIconKeyName()); + } + + + @Override + public String getSynonyms(String keyName) { + String val = phrases.get("poi_" + keyName); + if (val != null) { + int ind = val.indexOf(';'); + if (ind > 0) { + return val.substring(ind + 1); + } + return ""; + } + return null; + } + + @Override + public String getEnTranslation(AbstractPoiType type) { + AbstractPoiType baseLangType = type.getBaseLangType(); + if (baseLangType != null) { + return getEnTranslation(baseLangType) + " (" + type.getLang().toLowerCase() + ")"; + } + return getEnTranslation(type.getIconKeyName()); + } + + @Override + public String getEnTranslation(String keyName) { + if (enPhrases.isEmpty()) { + return Algorithms.capitalizeFirstLetter(keyName.replace('_', ' ')); + } + String val = enPhrases.get("poi_" + keyName); + if (val != null) { + int ind = val.indexOf(';'); + if (ind > 0) { + return val.substring(0, ind); + } + } + return val; + } + }; + private static class BinaryMapIndexReaderTest extends BinaryMapIndexReader { List amenities = Collections.emptyList(); From 5d344acf17b763a9522c9450c928cd75b0f6d9d5 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 15:55:14 +0200 Subject: [PATCH 043/108] Update ui tests & search fixing #8647 --- .../java/net/osmand/search/SearchUICore.java | 2 +- .../net/osmand/search/SearchUICoreTest.java | 23 +++--- .../search/free_street_portland.json | 25 ++++--- .../test/resources/search/navacerrada.json | 73 ++++++++++--------- 4 files changed, 66 insertions(+), 57 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java index 48e85541ee..7eec13cd94 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java @@ -851,8 +851,8 @@ public class SearchUICore { private enum ResultCompareStep { TOP_VISIBLE, - UNKNOWN_PHRASE_MATCH_WEIGHT, FOUND_WORD_COUNT, + UNKNOWN_PHRASE_MATCH_WEIGHT, SEARCH_DISTANCE_IF_NOT_BY_NAME, COMPARE_FIRST_NUMBER_IN_NAME, COMPARE_DISTANCE_TO_PARENT_SEARCH_RESULT, // makes sense only for inner subqueries diff --git a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java index 92af480864..0af85e9acb 100644 --- a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java +++ b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java @@ -1,10 +1,7 @@ package net.osmand.search; import java.io.File; -import java.io.FilenameFilter; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -22,9 +19,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.xmlpull.v1.XmlPullParserException; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - import net.osmand.OsmAndCollator; import net.osmand.ResultMatcher; import net.osmand.binary.BinaryMapIndexReader; @@ -35,8 +29,6 @@ import net.osmand.data.MapObject; import net.osmand.data.Street; import net.osmand.osm.AbstractPoiType; import net.osmand.osm.MapPoiTypes; -import net.osmand.router.RouteTestingTest; -import net.osmand.router.TestEntry; import net.osmand.search.SearchUICore.SearchResultCollection; import net.osmand.search.SearchUICore.SearchResultMatcher; import net.osmand.search.core.SearchPhrase; @@ -48,6 +40,7 @@ import net.osmand.util.Algorithms; public class SearchUICoreTest { private static final String SEARCH_RESOURCES_PATH = "src/test/resources/search/"; + private static boolean TEST_EXTRA_RESULTS = true; private File testFile; @@ -98,7 +91,7 @@ public class SearchUICoreTest { } @Test - public void testSearchImpl() throws IOException, JSONException { + public void testSearch() throws IOException, JSONException { File jsonFile = testFile; String sourceJsonText = Algorithms.getFileAsString(jsonFile); Assert.assertNotNull(sourceJsonText); @@ -149,6 +142,12 @@ public class SearchUICoreTest { results.add(resultsArr.getString(i)); } } + if (TEST_EXTRA_RESULTS && sourceJson.has("extra-results")) { + JSONArray resultsArr = sourceJson.getJSONArray("extra-results"); + for (int i = 0; i < resultsArr.length(); i++) { + results.add(resultsArr.getString(i)); + } + } SearchSettings s = SearchSettings.parseJSON(settingsJson); s.setOfflineIndexes(Collections.singletonList(reader)); @@ -181,6 +180,12 @@ public class SearchUICoreTest { String expected = results.get(i++); String present = result.toString(); //System.out.println(present); + if(!Algorithms.stringsEqual(expected, present)) { + System.out.println(String.format("Mismatch for '%s' != '%s'. Result: ", expected, present)); + for (SearchResult r : searchResults) { + System.out.println("\t\""+r.toString()+"\","); + } + } Assert.assertEquals(expected, present); if (i >= results.size()) { break; diff --git a/OsmAnd-java/src/test/resources/search/free_street_portland.json b/OsmAnd-java/src/test/resources/search/free_street_portland.json index 3f73bf1a3e..a4926a4877 100644 --- a/OsmAnd-java/src/test/resources/search/free_street_portland.json +++ b/OsmAnd-java/src/test/resources/search/free_street_portland.json @@ -12,17 +12,20 @@ "phrase": "48 Free Street Portland", "results": [ "48.0, ", - "48, Free Street (Downtown), Portland", - "48, Portland Street, North Berwick", - "48, Portland Avenue, Old Orchard Beach", - "Portland Street (Downtown), Portland", - "Portland Street Pier, South Portland", - "Portland Street, Yarmouth", - "Portland Street, North Berwick", - "Portland Street, Berwick", - "Portland Street, South Berwick", - "Portland Street, Fryeburg", - "Portland Square, Portland" + "48, Free Street (Downtown), Portland"], + "extra-results": [ + "48, Portland Street, North Berwick", + "Free Street (Downtown), Portland", + "Free Street (Ferry Village), South Portland", + "Portland Street", + "48, Portland Avenue, Old Orchard Beach", + "Portland Street (Downtown), Portland", + "Portland Street Pier, South Portland", + "Portland Street, Yarmouth", + "Portland Street, North Berwick", + "Portland Street, Berwick", + "Portland Street, South Berwick", + "Portland Street, Fryeburg" ], "amenities": [ { diff --git a/OsmAnd-java/src/test/resources/search/navacerrada.json b/OsmAnd-java/src/test/resources/search/navacerrada.json index 41bdccaacf..63f33578cb 100644 --- a/OsmAnd-java/src/test/resources/search/navacerrada.json +++ b/OsmAnd-java/src/test/resources/search/navacerrada.json @@ -10,43 +10,44 @@ "sortByName": false }, "phrase": "Calle de las eras 5, Navacerrada", + "results": [ - "5, Calle de las Eras (Uranización Los Corales), Navacerrada", - "5, Calle Navacerrada (Urb. Las Suertes), Las Suertes", - "50, Calle de Francisco Navacerrada, Salamanca", - "52, Calle de Francisco Navacerrada, Salamanca", - "53, Calle de Francisco Navacerrada, Salamanca", - "54, Calle de Francisco Navacerrada, Salamanca", - "55, Calle de Francisco Navacerrada, Salamanca", - "56, Calle de Francisco Navacerrada, Salamanca", - "57, Calle de Francisco Navacerrada, Salamanca", - "58, Calle de Francisco Navacerrada, Salamanca", - "59, Calle de Francisco Navacerrada, Salamanca", - "Calle del Puerto de Navacerrada, Las Nieves", - "Calle Puerto de Navacerrada, La Poveda", - "Calle del Embalse de Navacerrada, Villa de Vallecas", - "Calle del Puerto de Navacerrada, Puente de Vallecas", - "Calle de Francisco Navacerrada, Salamanca", - "Calle de Navacerrada, Moraleja de Enmedio", - "Calle Navacerrada (Urb. Las Suertes), Las Suertes", - "Calle Puerto de Navacerrada, Roman Candelas", - "Calle Navacerrada, Becerril de la Sierra", - "Carretera de Collado Villalba a Navacerrada, El Baillo y las Hojarascas", - "Calle Navacerrada (Cerceda), El Boalo", - "Calle Navacerrada (El Pedregal), Bustarviejo", - "Calle Navacerrada, Buitrago del Lozoya", - "Carretera de Colmenar Viejo a Navacerrada, Becerril de la Sierra", - "Carretera de Colmenar Viejo a Navacerrada, Manzanares el Real", - "Carretera de Collado Villalba a Navacerrada, Dehesa Boyal", - "Carretera de Collado Villalba a Navacerrada, Polideportivo Dehesa Boyal", - "Carretera de Navacerrada, Jazmines", - "Carretera de Colmenar Viejo a Navacerrada (Cerceda), El Boalo", - "Carretera de Collado Villalba a Navacerrada, Cerca de Cascarrilla", - "Carretera de Navacerrada, El Boalo", - "Carretera de Collado Villalba a Navacerrada, Collado Mediano", - "Camino de Navacerrada (Serranía de la Paloma), Collado Mediano", - "Camino de Los Molinos a Navacerrada, Collado Mediano", - "Carretera de Collado Villalba a Navacerrada, Navacerrada" + "5, Calle de las Eras (Uranización Los Corales), Navacerrada" + ], + "extra-results": [ + "Calle de las Eras (Uranización Los Corales), Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "Calle del Sotillo (Uranización Los Corales), Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "5, Calle Navacerrada (Urb. Las Suertes), Las Suertes", + "50, Calle de Francisco Navacerrada, Salamanca", + "52, Calle de Francisco Navacerrada, Salamanca", + "53, Calle de Francisco Navacerrada, Salamanca", + "54, Calle de Francisco Navacerrada, Salamanca", + "55, Calle de Francisco Navacerrada, Salamanca", + "56, Calle de Francisco Navacerrada, Salamanca", + "57, Calle de Francisco Navacerrada, Salamanca", + "58, Calle de Francisco Navacerrada, Salamanca", + "59, Calle de Francisco Navacerrada, Salamanca", + "Calle del Puerto de Navacerrada, Las Nieves", + "Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "Calle Barrio de las Peñas, Navacerrada", + "Calle de las Cruces (Residencial Sanabria), Navacerrada", + "Calle de las Escuelas, Navacerrada", + "Calle de las Huertas (Residencial Sanabria), Navacerrada", + "Calle de la Virgen de las Nieves, Puerto de Navacerrada", + "Calle Puerto de Navacerrada, La Poveda", + "Calle del Embalse de Navacerrada, Villa de Vallecas", + "Calle del Puerto de Navacerrada, Puente de Vallecas", + "Calle de Francisco Navacerrada, Salamanca", + "Calle de Navacerrada, Moraleja de Enmedio", + "Calle Navacerrada (Urb. Las Suertes), Las Suertes", + "Calle Puerto de Navacerrada, Roman Candelas", + "Calle Navacerrada, Becerril de la Sierra", + "Carretera de Collado Villalba a Navacerrada, El Baillo y las Hojarascas", + "Calle de Ángel Rojas, Navacerrada", + "Calle de los Robles (Uranización Los Corales), Navacerrada", + "Calle de los Enebros (Uranización Los Corales), Navacerrada", + "Calle de la Bola del Mundo (Residencial Sanabria), Navacerrada", + "Calle de la Maliciosa (Residencial Sanabria), Navacerrada", ], "amenities": [ { From f980ec4340668a04ebe295bb26735e8b1fdf267a Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 15:55:14 +0200 Subject: [PATCH 044/108] Update ui tests & search fixing #8647 Conflicts: OsmAnd-java/src/test/resources/search/navacerrada.json --- .../java/net/osmand/search/SearchUICore.java | 2 +- .../net/osmand/search/SearchUICoreTest.java | 23 +- .../search/free_street_portland.json | 25 +- .../test/resources/search/navacerrada.json | 3373 +++++++++++++++++ 4 files changed, 3402 insertions(+), 21 deletions(-) create mode 100644 OsmAnd-java/src/test/resources/search/navacerrada.json diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java index 48e85541ee..7eec13cd94 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java @@ -851,8 +851,8 @@ public class SearchUICore { private enum ResultCompareStep { TOP_VISIBLE, - UNKNOWN_PHRASE_MATCH_WEIGHT, FOUND_WORD_COUNT, + UNKNOWN_PHRASE_MATCH_WEIGHT, SEARCH_DISTANCE_IF_NOT_BY_NAME, COMPARE_FIRST_NUMBER_IN_NAME, COMPARE_DISTANCE_TO_PARENT_SEARCH_RESULT, // makes sense only for inner subqueries diff --git a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java index 92af480864..0af85e9acb 100644 --- a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java +++ b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java @@ -1,10 +1,7 @@ package net.osmand.search; import java.io.File; -import java.io.FilenameFilter; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; @@ -22,9 +19,6 @@ import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.xmlpull.v1.XmlPullParserException; -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; - import net.osmand.OsmAndCollator; import net.osmand.ResultMatcher; import net.osmand.binary.BinaryMapIndexReader; @@ -35,8 +29,6 @@ import net.osmand.data.MapObject; import net.osmand.data.Street; import net.osmand.osm.AbstractPoiType; import net.osmand.osm.MapPoiTypes; -import net.osmand.router.RouteTestingTest; -import net.osmand.router.TestEntry; import net.osmand.search.SearchUICore.SearchResultCollection; import net.osmand.search.SearchUICore.SearchResultMatcher; import net.osmand.search.core.SearchPhrase; @@ -48,6 +40,7 @@ import net.osmand.util.Algorithms; public class SearchUICoreTest { private static final String SEARCH_RESOURCES_PATH = "src/test/resources/search/"; + private static boolean TEST_EXTRA_RESULTS = true; private File testFile; @@ -98,7 +91,7 @@ public class SearchUICoreTest { } @Test - public void testSearchImpl() throws IOException, JSONException { + public void testSearch() throws IOException, JSONException { File jsonFile = testFile; String sourceJsonText = Algorithms.getFileAsString(jsonFile); Assert.assertNotNull(sourceJsonText); @@ -149,6 +142,12 @@ public class SearchUICoreTest { results.add(resultsArr.getString(i)); } } + if (TEST_EXTRA_RESULTS && sourceJson.has("extra-results")) { + JSONArray resultsArr = sourceJson.getJSONArray("extra-results"); + for (int i = 0; i < resultsArr.length(); i++) { + results.add(resultsArr.getString(i)); + } + } SearchSettings s = SearchSettings.parseJSON(settingsJson); s.setOfflineIndexes(Collections.singletonList(reader)); @@ -181,6 +180,12 @@ public class SearchUICoreTest { String expected = results.get(i++); String present = result.toString(); //System.out.println(present); + if(!Algorithms.stringsEqual(expected, present)) { + System.out.println(String.format("Mismatch for '%s' != '%s'. Result: ", expected, present)); + for (SearchResult r : searchResults) { + System.out.println("\t\""+r.toString()+"\","); + } + } Assert.assertEquals(expected, present); if (i >= results.size()) { break; diff --git a/OsmAnd-java/src/test/resources/search/free_street_portland.json b/OsmAnd-java/src/test/resources/search/free_street_portland.json index 3f73bf1a3e..a4926a4877 100644 --- a/OsmAnd-java/src/test/resources/search/free_street_portland.json +++ b/OsmAnd-java/src/test/resources/search/free_street_portland.json @@ -12,17 +12,20 @@ "phrase": "48 Free Street Portland", "results": [ "48.0, ", - "48, Free Street (Downtown), Portland", - "48, Portland Street, North Berwick", - "48, Portland Avenue, Old Orchard Beach", - "Portland Street (Downtown), Portland", - "Portland Street Pier, South Portland", - "Portland Street, Yarmouth", - "Portland Street, North Berwick", - "Portland Street, Berwick", - "Portland Street, South Berwick", - "Portland Street, Fryeburg", - "Portland Square, Portland" + "48, Free Street (Downtown), Portland"], + "extra-results": [ + "48, Portland Street, North Berwick", + "Free Street (Downtown), Portland", + "Free Street (Ferry Village), South Portland", + "Portland Street", + "48, Portland Avenue, Old Orchard Beach", + "Portland Street (Downtown), Portland", + "Portland Street Pier, South Portland", + "Portland Street, Yarmouth", + "Portland Street, North Berwick", + "Portland Street, Berwick", + "Portland Street, South Berwick", + "Portland Street, Fryeburg" ], "amenities": [ { diff --git a/OsmAnd-java/src/test/resources/search/navacerrada.json b/OsmAnd-java/src/test/resources/search/navacerrada.json new file mode 100644 index 0000000000..1358fb0e32 --- /dev/null +++ b/OsmAnd-java/src/test/resources/search/navacerrada.json @@ -0,0 +1,3373 @@ +{ + "settings": { + "lat": "40.22203", + "lon": "-3.52043", + "radiusLevel": 1, + "totalLimit": -1, + "lang": "", + "transliterateIfMissing": false, + "emptyQueryAllowed": false, + "sortByName": false + }, + "phrase": "Calle de las eras 5, Navacerrada", + "results": [ + "5, Calle de las Eras (Uranización Los Corales), Navacerrada" + ], + "extra-results": [ + "Calle de las Eras (Uranización Los Corales), Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "Calle del Sotillo (Uranización Los Corales), Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "5, Calle Navacerrada (Urb. Las Suertes), Las Suertes", + "50, Calle de Francisco Navacerrada, Salamanca", + "52, Calle de Francisco Navacerrada, Salamanca", + "53, Calle de Francisco Navacerrada, Salamanca", + "54, Calle de Francisco Navacerrada, Salamanca", + "55, Calle de Francisco Navacerrada, Salamanca", + "56, Calle de Francisco Navacerrada, Salamanca", + "57, Calle de Francisco Navacerrada, Salamanca", + "58, Calle de Francisco Navacerrada, Salamanca", + "59, Calle de Francisco Navacerrada, Salamanca", + "Calle del Puerto de Navacerrada, Las Nieves", + "Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "Calle Barrio de las Peñas, Navacerrada", + "Calle de las Cruces (Residencial Sanabria), Navacerrada", + "Calle de las Escuelas, Navacerrada", + "Calle de las Huertas (Residencial Sanabria), Navacerrada", + "Calle de la Virgen de las Nieves, Puerto de Navacerrada", + "Calle Puerto de Navacerrada, La Poveda", + "Calle del Embalse de Navacerrada, Villa de Vallecas", + "Calle del Puerto de Navacerrada, Puente de Vallecas", + "Calle de Francisco Navacerrada, Salamanca", + "Calle de Navacerrada, Moraleja de Enmedio", + "Calle Navacerrada (Urb. Las Suertes), Las Suertes", + "Calle Puerto de Navacerrada, Roman Candelas", + "Calle Navacerrada, Becerril de la Sierra", + "Carretera de Collado Villalba a Navacerrada, El Baillo y las Hojarascas", + "Calle de Ángel Rojas, Navacerrada", + "Calle de los Robles (Uranización Los Corales), Navacerrada", + "Calle de los Enebros (Uranización Los Corales), Navacerrada", + "Calle de la Bola del Mundo (Residencial Sanabria), Navacerrada", + "Calle de la Maliciosa (Residencial Sanabria), Navacerrada", + ], + "amenities": [ + { + "name": "CIMA MA05-2", + "lat": "40.70529", + "lon": "-4.06895", + "id": 637431647, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680", + "ref": "M-614", + "operator": "CIMA, Larrea" + } + }, + { + "name": "Plaça Navacerrada", + "lat": "41.57014", + "lon": "2.09182", + "id": 580630395, + "subType": "square", + "type": "man_made", + "additionalInfo": { + "surface_paving_stones": "paving_stones", + "lit_yes": "yes" + } + }, + { + "name": "CIMA MA05-2", + "lat": "40.70722", + "lon": "-4.06816", + "id": 637431645, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "ref": "M-614", + "operator": "CIMA" + } + }, + { + "name": "Arroyo de Navacerrada", + "lat": "40.79763", + "lon": "-3.71254", + "id": 504296555, + "subType": "stream", + "type": "natural" + }, + { + "name": "CIMA MA05-2", + "lat": "40.71215", + "lon": "-4.06445", + "id": 1549410751, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "ref": "M-614", + "operator": "CIMA" + } + }, + { + "name": "Residencia Militar de Acción Social de Descanso (RMASD) Navacerrada", + "lat": "40.78568", + "lon": "-4.00229", + "id": 206884273, + "subType": "hotel", + "type": "tourism", + "additionalInfo": { + "internet_access_type_wlan": "wlan", + "website": "https://ejercito.defensa.gob.es/diaper/Galerias/ocio/residencias/nacionales/ficheros/20180724_RMASD_NAVACERRADA.pdf", + "phone": "+34 91 849 45 00; +34 91 880 45 00", + "beds": "196", + "email": "navacerrada@et.mde.es", + "operator": "ET", + "rooms": "90", + "fax": "+34 91 749 46 29" + } + }, + { + "name": "Residencia Militar de Acción Social de Descanso (RMASD) Navacerrada", + "lat": "40.78568", + "lon": "-4.00229", + "id": 206884273, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "internet_access_type_wlan": "wlan", + "website": "https://ejercito.defensa.gob.es/diaper/Galerias/ocio/residencias/nacionales/ficheros/20180724_RMASD_NAVACERRADA.pdf", + "phone": "+34 91 849 45 00; +34 91 880 45 00", + "beds": "196", + "email": "navacerrada@et.mde.es", + "operator": "ET", + "rooms": "90", + "fax": "+34 91 749 46 29" + } + }, + { + "name": "Puerto de Navacerrada", + "lat": "40.78892", + "lon": "-4.00344", + "id": 8117318832, + "subType": "saddle", + "type": "natural", + "additionalInfo": { + "ele": "1858" + } + }, + { + "name": "Embalse de Navacerrada", + "lat": "40.71831", + "lon": "-4.00823", + "id": 38209571, + "subType": "water", + "type": "natural" + }, + { + "name": "Puerto de Navacerrada", + "lat": "40.78629", + "lon": "-4.00267", + "id": 607141782, + "subType": "hamlet", + "type": "administrative", + "additionalInfo": { + "population": "105", + "ele": "1812" + } + }, + { + "name": "Plaça Navacerrada", + "lat": "41.57024", + "lon": "2.09157", + "id": 580630399, + "subType": "square", + "type": "man_made", + "additionalInfo": { + "surface_paving_stones": "paving_stones" + } + }, + { + "name": "CIMA MA05-2", + "lat": "40.70070", + "lon": "-4.07155", + "id": 1277749125, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680", + "ref": "M-614", + "operator": "CIMA, Larrea" + } + }, + { + "name": "Depósito de agua Navacerrada", + "lat": "40.73776", + "lon": "-4.01776", + "id": 632179871, + "subType": "storage_tank", + "type": "man_made" + }, + { + "name": "Depósito de agua Navacerrada", + "lat": "40.73776", + "lon": "-4.01776", + "id": 632179871, + "subType": "building", + "type": "man_made" + }, + { + "name": "Arroyo de Navacerrada", + "lat": "40.82982", + "lon": "-3.72370", + "id": 504296571, + "subType": "stream", + "type": "natural" + }, + { + "name": "ADESGAM", + "lat": "40.67421", + "lon": "-4.08404", + "id": 54534453, + "subType": "rcn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "El Porron de Navacerrada", + "lat": "40.73069", + "lon": "-4.01074", + "id": 3638099748, + "subType": "restaurant", + "type": "sustenance", + "additionalInfo": { + "phone": "+34 669 888 301" + } + }, + { + "name": "Pto. Navacerrada", + "lat": "40.78444", + "lon": "-4.00473", + "id": 12363492954, + "subType": "public_transport_station", + "type": "transportation", + "additionalInfo": { + "wikipedia": "http://es.wikipedia.org/wiki/Estación de Puerto de Navacerrada" + } + }, + { + "name": "Pto. Navacerrada", + "lat": "40.78444", + "lon": "-4.00473", + "id": 12363492954, + "subType": "railway_station", + "type": "transportation", + "additionalInfo": { + "wikipedia": "http://es.wikipedia.org/wiki/Estación de Puerto de Navacerrada" + } + }, + { + "name": "Navacerrada", + "lat": "40.72880", + "lon": "-4.01518", + "id": 513208556, + "subType": "village", + "type": "administrative", + "additionalInfo": { + "website": "https://www.aytonavacerrada.org/", + "population": "2863", + "ele": "1195" + } + }, + { + "name": "CIMA MA05-2", + "lat": "40.70646", + "lon": "-4.06848", + "id": 486489283, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680", + "ref": "M-614", + "operator": "CIMA, Larrea" + } + }, + { + "name": "Tanatorio de Navacerrada", + "lat": "40.73280", + "lon": "-4.01261", + "id": 612724219, + "subType": "building", + "type": "man_made" + }, + { + "name": "Presa del Embalse de Navacerrada", + "lat": "40.75282", + "lon": "-3.99287", + "id": 193455239, + "subType": "dam", + "type": "man_made", + "additionalInfo": { + "ele": "1383" + } + }, + { + "name": "Presa del Embalse de Navacerrada", + "lat": "40.75282", + "lon": "-3.99287", + "id": 193455239, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "ele": "1383" + } + }, + { + "name": "ADESGAM", + "lat": "40.67437", + "lon": "-4.08406", + "id": 54534469, + "subType": "rcn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "Casa de Guías de Navacerrada", + "lat": "40.75423", + "lon": "-3.99422", + "id": 5372781178, + "subType": "building", + "type": "man_made" + }, + { + "name": "Pto. Navacerrada", + "lat": "40.78416", + "lon": "-4.00488", + "id": 685245267, + "subType": "public_transport_platform", + "type": "transportation" + }, + { + "name": "Avenida de Navacerrada", + "lat": "40.46203", + "lon": "-3.80318", + "id": 48756909, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.63854", + "lon": "-4.00602", + "id": 599484149, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "route_bus_ref": "691", + "ref": "M-601", + "operator": "Larrea" + } + }, + { + "name": "Carretera de Colmenar Viejo a Navacerrada", + "lat": "40.69764", + "lon": "-3.92253", + "id": 64972109, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "M-607" + } + }, + { + "name": "Carnicería Navacerrada", + "lat": "40.72947", + "lon": "-4.01482", + "id": 6298684474, + "subType": "butcher", + "type": "shop", + "additionalInfo": { + "phone": "+34 91 856 06 60" + } + }, + { + "name": "Parada 17649 Peñalara - Av Navacerrada", + "lat": "40.45939", + "lon": "-3.80052", + "id": 7508826650, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "bench_no": "no", + "covered_no": "no", + "bus_yes": "yes", + "network": "Linea 563 - 656A", + "ref": "17649" + } + }, + { + "name": "Río Navacerrada", + "lat": "40.74012", + "lon": "-3.99430", + "id": 193455251, + "subType": "river", + "type": "natural" + }, + { + "name": "Baltasar Santos - Pto. Navacerrada", + "lat": "40.40194", + "lon": "-3.65729", + "id": 2879406200, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "bus_yes": "yes", + "bench_yes": "yes", + "covered_yes": "yes", + "route_bus_ref": "141", + "ref": "3333", + "operator": "EMT Madrid" + } + }, + { + "name": "Baltasar Santos - Pto. Navacerrada", + "lat": "40.40194", + "lon": "-3.65690", + "id": 2879406204, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "bus_yes": "yes", + "bench_yes": "yes", + "covered_yes": "yes", + "route_bus_ref": "141", + "ref": "3318", + "operator": "EMT Madrid" + } + }, + { + "name": "Estación de Tratamiento de Agua Potable de Navacerrada", + "lat": "40.71319", + "lon": "-4.00578", + "id": 788909087, + "subType": "water_works", + "type": "man_made", + "additionalInfo": { + "operator": "Canal de Isabel II" + } + }, + { + "name": "Estación de Esquí Puerto de Navacerrada", + "lat": "40.78759", + "lon": "-4.00834", + "id": 4410455019520, + "subType": "skiing", + "type": "sport" + }, + { + "name": "Estación de Esquí Puerto de Navacerrada", + "lat": "40.78759", + "lon": "-4.00834", + "id": 4410455019520, + "subType": "ski_resort", + "type": "entertainment" + }, + { + "name": "Alameda Baja-Navacerrada", + "lat": "40.61227", + "lon": "-3.68424", + "id": 14632991214, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "covered_no": "no", + "bus_yes": "yes", + "bench_no": "no" + } + }, + { + "name": "Río Navacerrada", + "lat": "40.70574", + "lon": "-3.91495", + "id": 166715571, + "subType": "river", + "type": "natural", + "additionalInfo": { + "alt_name": "Río Samburiel; Río San Muriel; Río Berrocal" + } + }, + { + "name": "ADESGAM", + "lat": "40.67478", + "lon": "-4.08382", + "id": 489539697, + "subType": "rcn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "Puerto de Navacerrada", + "lat": "40.78923", + "lon": "-4.00342", + "id": 8556022052, + "subType": "viewpoint", + "type": "tourism" + }, + { + "name": "Guardia Civil - GREIM Navacerrada.", + "lat": "40.78727", + "lon": "-4.00158", + "id": 789772209, + "subType": "police", + "type": "emergency", + "additionalInfo": { + "operator": "Ministerio del Interior." + } + }, + { + "name": "Guardia Civil - GREIM Navacerrada.", + "lat": "40.78727", + "lon": "-4.00158", + "id": 789772209, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "operator": "Ministerio del Interior." + } + }, + { + "name": "Río Navacerrada", + "lat": "40.70981", + "lon": "-3.99435", + "id": 166715529, + "subType": "river", + "type": "natural" + }, + { + "name": "Río Navacerrada", + "lat": "40.72427", + "lon": "-4.00134", + "id": 166715649, + "subType": "river", + "type": "natural" + }, + { + "name": "Ctra. M861-Presa de Navacerrada", + "lat": "40.71340", + "lon": "-4.00786", + "id": 6367849404, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "bench_no": "no", + "covered_no": "no", + "bus_yes": "yes", + "website": "https://www.crtm.es/widgets/#/stop/8_10987", + "route_bus_ref": "690, 691, 691 Nocturno, 696", + "ref": "10987", + "operator": "Larrea" + } + }, + { + "name": "Cementerio de Navacerrada", + "lat": "40.73280", + "lon": "-4.01291", + "id": 376766597, + "subType": "cemetery", + "type": "man_made" + }, + { + "name": "Parque de Bomberos - Navacerrada. Nº46.", + "lat": "40.74058", + "lon": "-4.00434", + "id": 401232413, + "subType": "fire_station", + "type": "emergency", + "additionalInfo": { + "operator": "Comunidad de Madrid." + } + }, + { + "name": "Parque de Bomberos - Navacerrada. Nº46.", + "lat": "40.74058", + "lon": "-4.00434", + "id": 401232413, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "operator": "Comunidad de Madrid." + } + }, + { + "name": "Hotel Rural El Torreón de Navacerrada", + "lat": "40.72547", + "lon": "-4.02117", + "id": 400568089, + "subType": "hostel", + "type": "tourism", + "additionalInfo": { + "website": "http://www.eltorreondenavacerrada.com/", + "phone": "+34 900 365 062" + } + }, + { + "name": "Hotel Rural El Torreón de Navacerrada", + "lat": "40.72547", + "lon": "-4.02117", + "id": 400568089, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "website": "http://www.eltorreondenavacerrada.com/", + "phone": "+34 900 365 062" + } + }, + { + "name": "Parque de Navacerrada", + "lat": "40.46048", + "lon": "-3.80616", + "id": 60953689, + "subType": "park", + "type": "entertainment" + }, + { + "name": "ADESGAM", + "lat": "40.67374", + "lon": "-4.08423", + "id": 624211279, + "subType": "rcn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "CIMA MA05-2", + "lat": "40.70958", + "lon": "-4.06666", + "id": 46025413, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "ref": "M-614", + "operator": "CIMA" + } + }, + { + "name": "Escuela de Esquí de Navacerrada", + "lat": "40.78756", + "lon": "-4.00301", + "id": 206884207, + "subType": "school", + "type": "education" + }, + { + "name": "Escuela de Esquí de Navacerrada", + "lat": "40.78756", + "lon": "-4.00301", + "id": 206884207, + "subType": "building", + "type": "man_made" + }, + { + "name": "Consultorio local de Navacerrada", + "lat": "40.72897", + "lon": "-4.01613", + "id": 608506111, + "subType": "clinic", + "type": "healthcare", + "additionalInfo": { + "phone": "+34 91 856 02 94" + } + }, + { + "name": "Consultorio local de Navacerrada", + "lat": "40.72897", + "lon": "-4.01613", + "id": 608506111, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "phone": "+34 91 856 02 94" + } + }, + { + "name": "Embalse del Pueblo de Navacerrada", + "lat": "40.75311", + "lon": "-3.99302", + "id": 75433477, + "subType": "water", + "type": "natural" + }, + { + "name": "Pto. Navacerrada - Vía 2", + "lat": "40.78431", + "lon": "-4.00467", + "id": 6991750080, + "subType": "public_transport_stop_position", + "type": "transportation", + "additionalInfo": { + "operator": "Renfe", + "route_train_ref": "C-9" + } + }, + { + "name": "Calle Marqués de Santillana", + "lat": "40.67533", + "lon": "-4.08329", + "id": 54534529, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "ADESGAM", + "lat": "40.67533", + "lon": "-4.08329", + "id": 54534529, + "subType": "rcn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "Estación esquí Puerto de Navacerrada", + "lat": "40.78910", + "lon": "-3.99497", + "id": 1476307709, + "subType": "ski_resort", + "type": "entertainment" + }, + { + "name": "Glorieta de Navacerrada", + "lat": "40.43148", + "lon": "-3.66559", + "id": 120026928, + "subType": "square", + "type": "man_made" + }, + { + "name": "Ayuntamiento de Navacerrada", + "lat": "40.72900", + "lon": "-4.01456", + "id": 376766589, + "subType": "townhall", + "type": "administrative", + "additionalInfo": { + "website": "https://www.aytonavacerrada.org/", + "phone": "+34 91 856 00 06" + } + }, + { + "name": "Ayuntamiento de Navacerrada", + "lat": "40.72900", + "lon": "-4.01456", + "id": 376766589, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "website": "https://www.aytonavacerrada.org/", + "phone": "+34 91 856 00 06" + } + }, + { + "name": "CIMA MA05-2", + "lat": "40.71194", + "lon": "-4.06460", + "id": 794422033, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "ref": "M-614", + "operator": "CIMA" + } + }, + { + "name": "Ctra. M-601-Puerto de Navacerrada", + "lat": "40.78795", + "lon": "-4.00289", + "id": 7568805810, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "bench_no": "no", + "covered_no": "no", + "bus_yes": "yes", + "website": "https://www.crtm.es/widgets/#/stop/8_09195", + "route_bus_ref": "691", + "ref": "09195", + "operator": "Larrea" + } + }, + { + "name": "Residencia Navacerrada", + "lat": "40.78701", + "lon": "-4.00259", + "id": 206884231, + "subType": "hostel", + "type": "tourism", + "additionalInfo": { + "internet_access_type_wlan": "wlan", + "wheelchair_yes": "yes", + "website": "http://www.madrid.org/cs/Satellite?c=CM_InfPractica_FA&cid=1142638848709&pagename=ComunidadMadrid%2FEstructura", + "phone": "+34 91 852 39 84", + "beds": "107", + "email": "residencia.navacerrada@madrid.org", + "operator": "Comunidad de Madrid", + "rooms": "44", + "fax": "+34 91 852 02 68" + } + }, + { + "name": "Residencia Navacerrada", + "lat": "40.78701", + "lon": "-4.00259", + "id": 206884231, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "internet_access_type_wlan": "wlan", + "wheelchair_yes": "yes", + "website": "http://www.madrid.org/cs/Satellite?c=CM_InfPractica_FA&cid=1142638848709&pagename=ComunidadMadrid%2FEstructura", + "phone": "+34 91 852 39 84", + "beds": "107", + "email": "residencia.navacerrada@madrid.org", + "operator": "Comunidad de Madrid", + "rooms": "44", + "fax": "+34 91 852 02 68" + } + }, + { + "name": "Centro Municipal de Mayores «Navacerrada»", + "lat": "40.40118", + "lon": "-3.65658", + "id": 722127199, + "subType": "community_centre", + "type": "entertainment" + }, + { + "name": "Centro Municipal de Mayores «Navacerrada»", + "lat": "40.40118", + "lon": "-3.65658", + "id": 722127199, + "subType": "building", + "type": "man_made" + }, + { + "name": "ADESGAM", + "lat": "40.67395", + "lon": "-4.08410", + "id": 400005635, + "subType": "rcn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "rcn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680, 690", + "ref": "M-614", + "operator": "Larrea" + } + }, + { + "name": "Ctra. M-601-Puerto de Navacerrada", + "lat": "40.78797", + "lon": "-4.00304", + "id": 7568805812, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "bench_no": "no", + "covered_no": "no", + "bus_yes": "yes", + "website": "https://www.crtm.es/widgets/#/stop/8_09199", + "route_bus_ref": "691", + "ref": "09199", + "operator": "Larrea" + } + }, + { + "name": "Residencia Militar de Acción Social de Descanso (RMD) Navacerrada", + "lat": "40.78499", + "lon": "-4.00419", + "id": 478335835, + "subType": "hotel", + "type": "tourism", + "additionalInfo": { + "phone": "+34 91 849 4300", + "operator": "EA", + "fax": "+34 918494315" + } + }, + { + "name": "Residencia Militar de Acción Social de Descanso (RMD) Navacerrada", + "lat": "40.78499", + "lon": "-4.00419", + "id": 478335835, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "phone": "+34 91 849 4300", + "operator": "EA", + "fax": "+34 918494315" + } + }, + { + "name": "Avenida de Navacerrada", + "lat": "40.46202", + "lon": "-3.80327", + "id": 48731007, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "route_bus_ref": "563" + } + }, + { + "name": "El Torreón de Navacerrada", + "lat": "40.72547", + "lon": "-4.02108", + "id": 6852071664, + "subType": "restaurant", + "type": "sustenance", + "additionalInfo": { + "website": "http://www.eltorreondenavacerrada.com/", + "phone": "+34 900 365 062", + "mobile": "+34 648 227 909" + } + }, + { + "name": "CIMA MA05-2", + "lat": "40.70444", + "lon": "-4.06938", + "id": 637431653, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680", + "ref": "M-614", + "operator": "CIMA, Larrea" + } + }, + { + "name": "Estación de Navacerrada", + "lat": "40.78444", + "lon": "-4.00475", + "id": 478335833, + "subType": "public_transport_station", + "type": "transportation" + }, + { + "name": "Estación de Navacerrada", + "lat": "40.78444", + "lon": "-4.00475", + "id": 478335833, + "subType": "building", + "type": "man_made" + }, + { + "name": "CIMA MA05-2", + "lat": "40.70496", + "lon": "-4.06904", + "id": 637431651, + "subType": "ncn_ref", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bicycle_yes": "yes", + "network": "ncn", + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada", + "route_bus_ref": "680", + "ref": "M-614", + "operator": "CIMA, Larrea" + } + }, + { + "name": "Puerta de Navacerrada", + "lat": "40.73362", + "lon": "-4.00668", + "id": 8823389690, + "subType": "artwork", + "type": "tourism", + "additionalInfo": { + "artwork_type_sculpture": "sculpture", + "artist_name": "Vicente Palacios" + } + }, + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.70291", + "lon": "-4.00402", + "id": 46814485, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "M-601", + "operator": "CIMA", + "network": "ncn" + } + }, + { + "name": "Río de Navacerrada", + "lat": "40.75946", + "lon": "-3.99336", + "id": 715513915, + "subType": "river", + "type": "natural" + } + ], + "cities": [ + { + "name": "Villa de Vallecas", + "lat": "40.37396", + "lon": "-3.61216", + "id": 316755084, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Calle del Embalse de Navacerrada", + "lat": "40.36299", + "lon": "-3.60289", + "id": 23126, + "intersectedStreets": [ + { + "name": "Calle de José Gutiérrez Maroto", + "lat": "40.36388", + "lon": "-3.60470" + }, + { + "name": "Calle del Embalse de Picadas", + "lat": "40.36347", + "lon": "-3.60384" + }, + { + "name": "Calle del Embalse de La Jarosa", + "lat": "40.36299", + "lon": "-3.60289" + }, + { + "name": "Calle del Embalse de San Juan", + "lat": "40.36138", + "lon": "-3.59959" + }, + { + "name": "Calle del Embalse de Pinilla", + "lat": "40.35943", + "lon": "-3.59564" + }, + { + "name": "Gran Vía del Sureste", + "lat": "40.35843", + "lon": "-3.59365" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Buitrago del Lozoya", + "lat": "40.99535", + "lon": "-3.63505", + "id": 291749136, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Calle Navacerrada", + "lat": "40.98835", + "lon": "-3.63540", + "id": 49557, + "intersectedStreets": [ + { + "name": "Calle Somosierra", + "lat": "40.98813", + "lon": "-3.63564" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Cercedilla", + "lat": "40.74129", + "lon": "-4.05580", + "id": 287860053, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Guadarrama a Navacerrada", + "lat": "40.71770", + "lon": "-4.06192", + "id": 33948 + } + ], + "matchStreet": 1 + }, + { + "name": "Salamanca", + "names": { + "ar": "سلامنكا" + }, + "lat": "40.42705", + "lon": "-3.68060", + "id": 365886835, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Calle de Francisco Navacerrada", + "lat": "40.43133", + "lon": "-3.66699", + "id": 12315, + "buildings": [ + { + "name": "50", + "lat": "40.43127", + "lon": "-3.66664", + "postcode": "28028" + }, + { + "name": "52", + "lat": "40.43130", + "lon": "-3.66645", + "postcode": "28028" + }, + { + "name": "53", + "lat": "40.43155", + "lon": "-3.66624", + "postcode": "28028" + }, + { + "name": "54", + "lat": "40.43130", + "lon": "-3.66632", + "postcode": "28028" + }, + { + "name": "55", + "lat": "40.43158", + "lon": "-3.66604", + "postcode": "28028" + }, + { + "name": "56", + "lat": "40.43132", + "lon": "-3.66624", + "postcode": "28028" + }, + { + "name": "57", + "lat": "40.43173", + "lon": "-3.66542", + "postcode": "28028" + }, + { + "name": "58", + "lat": "40.43133", + "lon": "-3.66589", + "postcode": "28028" + }, + { + "name": "59", + "lat": "40.43164", + "lon": "-3.66521", + "postcode": "28028" + }, + { + "name": "60", + "lat": "40.43137", + "lon": "-3.66542", + "postcode": "28028" + }, + { + "name": "62", + "lat": "40.43143", + "lon": "-3.66527", + "postcode": "28028" + }, + { + "name": "63", + "lat": "40.43171", + "lon": "-3.66480", + "postcode": "28028" + }, + { + "name": "64", + "lat": "40.43150", + "lon": "-3.66465", + "postcode": "28028" + } + ], + "intersectedStreets": [ + { + "name": "Calle de Julio Camba", + "lat": "40.43171", + "lon": "-3.66441" + }, + { + "name": "Calle del Cardenal Belluga", + "lat": "40.43150", + "lon": "-3.66561" + }, + { + "name": "Glorieta del Campanar", + "lat": "40.43133", + "lon": "-3.66699" + }, + { + "name": "Calle de Campanar", + "lat": "40.43132", + "lon": "-3.66720" + }, + { + "name": "Calle Cartagena", + "lat": "40.43093", + "lon": "-3.67057" + }, + { + "name": "Calle de Cartagena", + "lat": "40.43093", + "lon": "-3.67057" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "La Poveda", + "lat": "40.31492", + "lon": "-3.47827", + "id": 1779479627, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Calle Puerto de Navacerrada", + "lat": "40.31771", + "lon": "-3.47848", + "id": 51201, + "intersectedStreets": [ + { + "name": "Calle Monte Rosa", + "lat": "40.31695", + "lon": "-3.47964" + }, + { + "name": "Calle Puerto de Somosierra", + "lat": "40.31723", + "lon": "-3.47925" + }, + { + "name": "Calle Puerto de la Morcuera", + "lat": "40.31749", + "lon": "-3.47889" + }, + { + "name": "Calle Puerto de Pajares", + "lat": "40.31772", + "lon": "-3.47848" + }, + { + "name": "Calle Puerto de Contreras", + "lat": "40.31790", + "lon": "-3.47803" + }, + { + "name": "Calle Montes Pirineos", + "lat": "40.31650", + "lon": "-3.48018" + }, + { + "name": "Calle Puerto de Cotos", + "lat": "40.31656", + "lon": "-3.48007" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Polideportivo Dehesa Boyal", + "lat": "40.64154", + "lon": "-4.00246", + "id": 4385398747, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.64118", + "lon": "-4.00557", + "id": 16939 + } + ], + "matchStreet": 1 + }, + { + "name": "Jazmines", + "lat": "40.64216", + "lon": "-4.00733", + "id": 4385398744, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Carretera de Navacerrada", + "lat": "40.64424", + "lon": "-4.00739", + "id": 2270, + "buildings": [ + { + "name": "km0.600", + "lat": "40.64424", + "lon": "-4.00739", + "postcode": "28400" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Manzanares el Real", + "lat": "40.72676", + "lon": "-3.86498", + "id": 200986413, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Colmenar Viejo a Navacerrada", + "lat": "40.68646", + "lon": "-3.89476", + "id": 30733, + "intersectedStreets": [ + { + "name": "Cordel de Navalcaide", + "lat": "40.68679", + "lon": "-3.82938" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Collado Mediano", + "lat": "40.69437", + "lon": "-4.02472", + "id": 198062829, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camino de Los Molinos a Navacerrada", + "lat": "40.71308", + "lon": "-4.05142", + "id": 53626, + "intersectedStreets": [ + { + "name": "Calle de las Pozas (Reajo del Roble)", + "lat": "40.71439", + "lon": "-4.01891" + }, + { + "name": "Avenida Lago", + "lat": "40.71439", + "lon": "-4.01891" + } + ] + }, + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.68539", + "lon": "-4.01346", + "id": 13946, + "buildings": [ + { + "name": "Km 7", + "lat": "40.70254", + "lon": "-4.00368", + "postcode": "28450" + } + ], + "intersectedStreets": [ + { + "name": "Avenida de Buenos Aires", + "lat": "40.68524", + "lon": "-4.01381" + }, + { + "name": "Camino de Navacerrada (Serranía de la Paloma)", + "lat": "40.70834", + "lon": "-4.00555" + } + ] + }, + { + "name": "Camino de Navacerrada (Serranía de la Paloma)", + "lat": "40.70426", + "lon": "-4.00756", + "id": 36508, + "intersectedStreets": [ + { + "name": "Calle Los Abetos (Serranía de la Paloma)", + "lat": "40.70478", + "lon": "-4.00726" + }, + { + "name": "Calle Tejera (Serranía de la Paloma)", + "lat": "40.70490", + "lon": "-4.00726" + }, + { + "name": "Calle Begoña (Serranía de la Paloma)", + "lat": "40.70550", + "lon": "-4.00735" + }, + { + "name": "Calle de Cotos (Serranía de la Paloma)", + "lat": "40.70550", + "lon": "-4.00735" + }, + { + "name": "Calle Pilar (Serranía de la Paloma)", + "lat": "40.70673", + "lon": "-4.00675" + }, + { + "name": "Calle Somosierra (Serranía de la Paloma)", + "lat": "40.70737", + "lon": "-4.00651" + }, + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.70833", + "lon": "-4.00555" + }, + { + "name": "Calle Ignacio", + "lat": "40.70830", + "lon": "-4.00574" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Las Nieves", + "lat": "40.34919", + "lon": "-3.88357", + "id": 1482408061, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Calle del Puerto de Navacerrada", + "lat": "40.34908", + "lon": "-3.88234", + "id": 54919, + "buildings": [ + { + "name": "94", + "lat": "40.34898", + "lon": "-3.88139" + }, + { + "name": "102", + "lat": "40.34910", + "lon": "-3.88234" + }, + { + "name": "104", + "lat": "40.34921", + "lon": "-3.88262" + }, + { + "name": "106", + "lat": "40.34926", + "lon": "-3.88281" + }, + { + "name": "108", + "lat": "40.34946", + "lon": "-3.88294" + }, + { + "name": "110", + "lat": "40.34950", + "lon": "-3.88311" + }, + { + "name": "112", + "lat": "40.34941", + "lon": "-3.88335" + }, + { + "name": "114", + "lat": "40.34955", + "lon": "-3.88345" + }, + { + "name": "116", + "lat": "40.34957", + "lon": "-3.88367" + }, + { + "name": "118", + "lat": "40.34957", + "lon": "-3.88390" + }, + { + "name": "120", + "lat": "40.34955", + "lon": "-3.88414" + }, + { + "name": "122", + "lat": "40.34965", + "lon": "-3.88446" + }, + { + "name": "126", + "lat": "40.34980", + "lon": "-3.88472" + }, + { + "name": "128", + "lat": "40.34980", + "lon": "-3.88508" + } + ], + "intersectedStreets": [ + { + "name": "Calle del Puerto de la Cruz Verde", + "lat": "40.34973", + "lon": "-3.88575" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Becerril de la Sierra", + "lat": "40.71634", + "lon": "-3.98907", + "id": 198062823, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Colmenar Viejo a Navacerrada", + "lat": "40.68160", + "lon": "-3.86704", + "id": 58412 + }, + { + "name": "Calle Navacerrada", + "lat": "40.71101", + "lon": "-3.99834", + "id": 36184, + "intersectedStreets": [ + { + "name": "Calle Campuzano", + "lat": "40.71124", + "lon": "-3.99911" + }, + { + "name": "Calle Marqués de Santillana", + "lat": "40.71129", + "lon": "-3.99754" + }, + { + "name": "Calle del Caz", + "lat": "40.71129", + "lon": "-3.99754" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Roman Candelas", + "lat": "40.62944", + "lon": "-4.02360", + "id": 4328359686, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Calle Puerto de Navacerrada", + "lat": "40.63021", + "lon": "-4.02261", + "id": 17879, + "intersectedStreets": [ + { + "name": "Paseo del Río Guadarrama", + "lat": "40.63021", + "lon": "-4.02261" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Cerca de Cascarrilla", + "lat": "40.65262", + "lon": "-4.01000", + "id": 4328359659, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.65295", + "lon": "-4.00853", + "id": 16936, + "intersectedStreets": [ + { + "name": "Rotonda del Lobo Cojo", + "lat": "40.65163", + "lon": "-4.00866" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Dehesa Boyal", + "lat": "40.64003", + "lon": "-4.00020", + "id": 4328359661, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.64037", + "lon": "-4.00544", + "id": 16941, + "intersectedStreets": [ + { + "name": "Carretera de La Granja", + "lat": "40.63947", + "lon": "-4.00557" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Puente de Vallecas", + "enName": "Vallecas", + "lat": "40.38686", + "lon": "-3.65918", + "id": 316750327, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Calle del Puerto de Navacerrada", + "lat": "40.39972", + "lon": "-3.65789", + "id": 10385, + "buildings": [ + { + "name": "1", + "lat": "40.40119", + "lon": "-3.65662", + "postcode": "28038" + }, + { + "name": "17", + "lat": "40.39972", + "lon": "-3.65789", + "postcode": "28038" + } + ], + "intersectedStreets": [ + { + "name": "Camino de Valderribas", + "lat": "40.39843", + "lon": "-3.65873" + }, + { + "name": "Calle Alto del León", + "lat": "40.39938", + "lon": "-3.65823" + }, + { + "name": "Calle Puerto de Canencia", + "lat": "40.40020", + "lon": "-3.65780" + }, + { + "name": "Calle Sierra de Cuerda Larga", + "lat": "40.40100", + "lon": "-3.65740" + }, + { + "name": "Calle de Baltasar Santos", + "lat": "40.40190", + "lon": "-3.65695" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Las Suertes", + "lat": "40.62089", + "lon": "-4.00423", + "id": 4327015634, + "type": "SUBURB", + "listOfStreets": [ + { + "name": "Calle Navacerrada (Urb. Las Suertes)", + "lat": "40.62377", + "lon": "-4.00347", + "id": 18728, + "buildings": [ + { + "name": "1", + "lat": "40.62343", + "lon": "-4.00368", + "postcode": "28400" + }, + { + "name": "2", + "lat": "40.62358", + "lon": "-4.00351", + "postcode": "28400" + }, + { + "name": "3", + "lat": "40.62353", + "lon": "-4.00321", + "postcode": "28400" + }, + { + "name": "4", + "lat": "40.62333", + "lon": "-4.00314", + "postcode": "28400" + }, + { + "name": "5", + "lat": "40.62330", + "lon": "-4.00284", + "postcode": "28400" + }, + { + "name": "6", + "lat": "40.62348", + "lon": "-4.00265", + "postcode": "28400" + }, + { + "name": "7", + "lat": "40.62345", + "lon": "-4.00235", + "postcode": "28400" + }, + { + "name": "8", + "lat": "40.62364", + "lon": "-4.00274", + "postcode": "28400" + }, + { + "name": "17", + "lat": "40.62399", + "lon": "-4.00355", + "postcode": "28400" + }, + { + "name": "18", + "lat": "40.62420", + "lon": "-4.00319", + "postcode": "28400" + }, + { + "name": "19", + "lat": "40.62403", + "lon": "-4.00299", + "postcode": "28400" + } + ], + "intersectedStreets": [ + { + "name": "Avenida Las Suertes", + "lat": "40.62384", + "lon": "-4.00389" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Bustarviejo", + "names": { + "ru": "Бустарвьехо" + }, + "lat": "40.85867", + "lon": "-3.71015", + "id": 310996890, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Calle Navacerrada (El Pedregal)", + "lat": "40.86253", + "lon": "-3.70147", + "id": 37253, + "intersectedStreets": [ + { + "name": "Calle Canencia", + "lat": "40.86211", + "lon": "-3.70398" + }, + { + "name": "Calle Prado Redondo (El Pedregal)", + "lat": "40.86253", + "lon": "-3.70147" + }, + { + "name": "Calle María de las Casas", + "lat": "40.86253", + "lon": "-3.70147" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "El Baillo y las Hojarascas", + "lat": "40.74321", + "lon": "-4.04124", + "id": 1482405188, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.75496", + "lon": "-4.02076", + "id": 52475 + } + ], + "matchStreet": 1 + }, + { + "name": "El Boalo", + "lat": "40.71735", + "lon": "-3.92025", + "id": 174984610, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Navacerrada", + "lat": "40.70197", + "lon": "-3.94332", + "id": 13564, + "intersectedStreets": [ + { + "name": "Avenida Central", + "lat": "40.70211", + "lon": "-3.94300" + }, + { + "name": "Calle Cerrillo Agustín", + "lat": "40.70072", + "lon": "-3.94120" + }, + { + "name": "Calle Depósito", + "lat": "40.70068", + "lon": "-3.94104" + }, + { + "name": "Calle Prado Gómez", + "lat": "40.70104", + "lon": "-3.94165" + }, + { + "name": "Carretera de Colmenar Viejo a Navacerrada (Cerceda)", + "lat": "40.69964", + "lon": "-3.93158" + }, + { + "name": "Calle Pajar Madedero", + "lat": "40.69995", + "lon": "-3.93641" + }, + { + "name": "Calle Becerril", + "lat": "40.69980", + "lon": "-3.93534" + }, + { + "name": "Carretera de Cerceda-Moralzarzal (San Muriel)", + "lat": "40.70013", + "lon": "-3.93746" + } + ] + }, + { + "name": "Carretera de Colmenar Viejo a Navacerrada (Cerceda)", + "lat": "40.69863", + "lon": "-3.92778", + "id": 11811, + "intersectedStreets": [ + { + "name": "Carretera de Cerceda a Manzanares", + "names": { + "alt_name": "Paseo de Madrid" + }, + "lat": "40.69976", + "lon": "-3.93122" + }, + { + "name": "Carretera de Navacerrada", + "lat": "40.69964", + "lon": "-3.93158" + }, + { + "name": "Calle Granito (San Muriel)", + "lat": "40.69828", + "lon": "-3.92472" + }, + { + "name": "Avenida de los Canteros (Cerceda)", + "lat": "40.69935", + "lon": "-3.93156" + } + ] + }, + { + "name": "Calle Navacerrada (Cerceda)", + "lat": "40.69845", + "lon": "-3.92768", + "id": 39122, + "intersectedStreets": [ + { + "name": "Calle Vista Nieve", + "lat": "40.69845", + "lon": "-3.92768" + }, + { + "name": "Calle Colmenar (Cerceda)", + "lat": "40.69793", + "lon": "-3.93010" + }, + { + "name": "Calle Guadarrama (San Muriel)", + "lat": "40.70132", + "lon": "-3.92931" + }, + { + "name": "Calle Navafría (San Muriel)", + "lat": "40.70172", + "lon": "-3.92866" + }, + { + "name": "Calle Pedriza (Montes Claros)", + "lat": "40.70210", + "lon": "-3.92789" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Navacerrada", + "lat": "40.72879", + "lon": "-4.01517", + "id": 256604278, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Avenida de Madrid", + "lat": "40.72871", + "lon": "-4.01643", + "id": 2175 + }, + { + "name": "Calle Antonio Buero Vallejo", + "lat": "40.72181", + "lon": "-4.01836", + "id": 36357 + }, + { + "name": "Calle Barrio de las Peñas", + "lat": "40.72849", + "lon": "-4.01349", + "id": 6847 + }, + { + "name": "Calle Canto Gordo", + "lat": "40.72085", + "lon": "-4.01499", + "id": 36366 + }, + { + "name": "Calle Dos Castillas", + "lat": "40.78860", + "lon": "-4.00271", + "id": 40864 + }, + { + "name": "Calle Fernando Vizcaíno Casas", + "lat": "40.72836", + "lon": "-4.01849", + "id": 36397 + }, + { + "name": "Calle Fuenlabrada", + "lat": "40.72833", + "lon": "-4.01711", + "id": 5985 + }, + { + "name": "Calle Linar", + "lat": "40.73158", + "lon": "-4.01615", + "id": 9435 + }, + { + "name": "Calle Miguel Antón", + "lat": "40.73077", + "lon": "-4.01926", + "id": 49790 + }, + { + "name": "Calle de Abel", + "lat": "40.73088", + "lon": "-4.01565", + "id": 1914 + }, + { + "name": "Calle de Andrés Segovia", + "lat": "40.72848", + "lon": "-4.01849", + "id": 36394 + }, + { + "name": "Calle de la Audiencia", + "lat": "40.72869", + "lon": "-4.01449", + "id": 8954 + }, + { + "name": "Calle de la Encinilla", + "lat": "40.72991", + "lon": "-4.01501", + "id": 2469 + }, + { + "name": "Calle de la Iglesia", + "lat": "40.72932", + "lon": "-4.01495", + "id": 2468 + }, + { + "name": "Calle de la Magdalena", + "lat": "40.72832", + "lon": "-4.01342", + "id": 6848 + }, + { + "name": "Calle de la Perdiz", + "lat": "40.73328", + "lon": "-4.00353", + "id": 36400 + }, + { + "name": "Calle de la Tejera", + "lat": "40.72645", + "lon": "-4.02040", + "id": 6815 + }, + { + "name": "Calle de las Escuelas", + "lat": "40.72791", + "lon": "-4.01591", + "id": 8329 + }, + { + "name": "Calle de los Arcos", + "lat": "40.73129", + "lon": "-4.02040", + "id": 36868 + }, + { + "name": "Calle de Álvaro Iglesia", + "lat": "40.73513", + "lon": "-4.01134", + "id": 36411 + }, + { + "name": "Calle del Cuartel", + "lat": "40.72958", + "lon": "-4.01432", + "id": 3521 + }, + { + "name": "Calle del Halcón", + "lat": "40.73415", + "lon": "-4.00387", + "id": 36393 + }, + { + "name": "Calle del Mayo", + "lat": "40.72919", + "lon": "-4.01520", + "id": 6000 + }, + { + "name": "Calle del Águila", + "lat": "40.73267", + "lon": "-4.00274", + "id": 36414 + }, + { + "name": "Camino de la Tubería", + "lat": "40.77937", + "lon": "-3.99460", + "id": 33047 + }, + { + "name": "Camino del Calvario", + "lat": "40.74797", + "lon": "-4.03372", + "id": 35661 + }, + { + "name": "Camino del Dedo", + "lat": "40.72718", + "lon": "-3.99801", + "id": 58961 + }, + { + "name": "Camino del Río", + "lat": "40.73563", + "lon": "-4.00188", + "id": 36308 + }, + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.73397", + "lon": "-4.02005", + "id": 31367 + }, + { + "name": "Carretera de Guadarrama a Navacerrada", + "lat": "40.73402", + "lon": "-4.02205", + "id": 35662 + }, + { + "name": "GR-10", + "lat": "40.74550", + "lon": "-4.03284", + "id": 34099 + }, + { + "name": "La Bola del Mundo", + "lat": "40.78389", + "lon": "-3.99113", + "id": 40865 + }, + { + "name": "PR-M 16", + "lat": "40.78007", + "lon": "-3.97435", + "id": 55578 + }, + { + "name": "Paseo de la Magdalena", + "lat": "40.72484", + "lon": "-4.01113", + "id": 36415 + }, + { + "name": "Plaza del Álamo", + "lat": "40.72893", + "lon": "-4.01424", + "id": 6001 + }, + { + "name": "Travesía de la Tejera", + "lat": "40.72438", + "lon": "-4.02140", + "id": 36354 + }, + { + "name": "Travesía de las Huertas", + "lat": "40.72864", + "lon": "-4.01374", + "id": 3500 + }, + { + "name": "Travesía del Cuartel", + "lat": "40.72937", + "lon": "-4.01419", + "id": 36386 + }, + { + "name": "Travesía del Rosal", + "lat": "40.71997", + "lon": "-4.01449", + "id": 36356 + }, + { + "name": "Vereda de las Encinillas", + "lat": "40.78098", + "lon": "-4.02091", + "id": 17270 + }, + { + "name": "Whistler", + "lat": "40.77357", + "lon": "-4.01132", + "id": 35918 + }, + { + "name": "Calle Amanecer (Uranización Los Corales)", + "lat": "40.73220", + "lon": "-4.00503", + "id": 36403 + }, + { + "name": "Calle Atardecer (Uranización Los Corales)", + "lat": "40.73261", + "lon": "-4.00746", + "id": 5476 + }, + { + "name": "Calle Lucero (Uranización Los Corales)", + "lat": "40.73095", + "lon": "-4.00527", + "id": 36405 + }, + { + "name": "Calle Manzanares (Residencial Sanabria)", + "lat": "40.73014", + "lon": "-4.01102", + "id": 1670 + }, + { + "name": "Calle Orión (Uranización Los Corales)", + "lat": "40.73173", + "lon": "-4.00724", + "id": 5477 + }, + { + "name": "Calle Poniente (Uranización Los Corales)", + "lat": "40.73295", + "lon": "-4.00621", + "id": 36422 + }, + { + "name": "Calle de Carmen Conde (Residencial Sanabria)", + "lat": "40.72986", + "lon": "-4.01374", + "id": 36404 + }, + { + "name": "Calle de San Sebastián (Residencial Sanabria)", + "lat": "40.73280", + "lon": "-4.01520", + "id": 8330 + }, + { + "name": "Calle de la Bola del Mundo (Residencial Sanabria)", + "lat": "40.72729", + "lon": "-4.01218", + "id": 6854 + }, + { + "name": "Calle de la Canaleja (Residencial Sanabria)", + "lat": "40.73053", + "lon": "-4.01428", + "id": 6974 + }, + { + "name": "Calle de la Maliciosa (Residencial Sanabria)", + "lat": "40.72801", + "lon": "-4.01166", + "id": 6853 + }, + { + "name": "Calle de las Cruces (Residencial Sanabria)", + "lat": "40.72941", + "lon": "-4.01265", + "id": 5792 + }, + { + "name": "Calle de las Eras (Uranización Los Corales)", + "lat": "40.73121", + "lon": "-4.00964", + "id": 3395, + "buildings": [ + { + "name": "1", + "lat": "40.73123", + "lon": "-4.00997", + "postcode": "28491" + }, + { + "name": "2", + "lat": "40.73121", + "lon": "-4.00964", + "postcode": "28491" + }, + { + "name": "3", + "lat": "40.73154", + "lon": "-4.00958", + "postcode": "28491" + }, + { + "name": "4", + "lat": "40.73181", + "lon": "-4.00874", + "postcode": "28491" + }, + { + "name": "5", + "lat": "40.73163", + "lon": "-4.00943", + "postcode": "28491" + }, + { + "name": "6", + "lat": "40.73186", + "lon": "-4.00859", + "postcode": "28491" + }, + { + "name": "7", + "lat": "40.73173", + "lon": "-4.00932", + "postcode": "28491" + }, + { + "name": "8", + "lat": "40.73197", + "lon": "-4.00855", + "postcode": "28491" + }, + { + "name": "9", + "lat": "40.73183", + "lon": "-4.00924" + }, + { + "name": "10", + "lat": "40.73222", + "lon": "-4.00801", + "postcode": "28491" + }, + { + "name": "11", + "lat": "40.73214", + "lon": "-4.00874", + "postcode": "28491" + }, + { + "name": "12", + "lat": "40.73227", + "lon": "-4.00797", + "postcode": "28491" + }, + { + "name": "13", + "lat": "40.73220", + "lon": "-4.00859", + "postcode": "28491" + }, + { + "name": "14", + "lat": "40.73269", + "lon": "-4.00748", + "postcode": "28491" + }, + { + "name": "15", + "lat": "40.73223", + "lon": "-4.00849", + "postcode": "28491" + }, + { + "name": "16", + "lat": "40.73272", + "lon": "-4.00741", + "postcode": "28491" + }, + { + "name": "17", + "lat": "40.73228", + "lon": "-4.00840", + "postcode": "28491" + }, + { + "name": "18", + "lat": "40.73275", + "lon": "-4.00726", + "postcode": "28491" + }, + { + "name": "19", + "lat": "40.73235", + "lon": "-4.00855", + "postcode": "28491" + }, + { + "name": "20", + "lat": "40.73280", + "lon": "-4.00735", + "postcode": "28491" + }, + { + "name": "21", + "lat": "40.73241", + "lon": "-4.00831", + "postcode": "28491" + }, + { + "name": "22", + "lat": "40.73284", + "lon": "-4.00711", + "postcode": "28491" + }, + { + "name": "24", + "lat": "40.73288", + "lon": "-4.00731", + "postcode": "28491" + }, + { + "name": "26", + "lat": "40.73292", + "lon": "-4.00711", + "postcode": "28491" + }, + { + "name": "28", + "lat": "40.73297", + "lon": "-4.00720", + "postcode": "28491" + }, + { + "name": "30", + "lat": "40.73300", + "lon": "-4.00703", + "postcode": "28491" + }, + { + "name": "32", + "lat": "40.73305", + "lon": "-4.00709", + "postcode": "28491" + }, + { + "name": "34", + "lat": "40.73308", + "lon": "-4.00688", + "postcode": "28491" + }, + { + "name": "36", + "lat": "40.73313", + "lon": "-4.00686", + "postcode": "28491" + } + ], + "intersectedStreets": [ + { + "name": "Pasaje de las Eras (Uranización Los Corales)", + "lat": "40.73139", + "lon": "-4.00958" + }, + { + "name": "Travesía de los Robles", + "lat": "40.73163", + "lon": "-4.00924" + }, + { + "name": "Plaza del Gargantón (Residencial Sanabria)", + "lat": "40.73092", + "lon": "-4.01020" + }, + { + "name": "Calle de los Robles (Uranización Los Corales)", + "lat": "40.73111", + "lon": "-4.00992" + }, + { + "name": "Calle del Sotillo (Uranización Los Corales)", + "lat": "40.73184", + "lon": "-4.00894" + }, + { + "name": "Calle los Corrales", + "lat": "40.73220", + "lon": "-4.00844" + }, + { + "name": "Travesía del Sotillo", + "lat": "40.73246", + "lon": "-4.00808" + }, + { + "name": "Calle Atardecer (Uranización Los Corales)", + "lat": "40.73272", + "lon": "-4.00771" + } + ] + }, + { + "name": "Calle de las Huertas (Residencial Sanabria)", + "lat": "40.72934", + "lon": "-4.01364", + "id": 5659 + }, + { + "name": "Calle de los Enebros (Uranización Los Corales)", + "lat": "40.72993", + "lon": "-4.00703", + "id": 36417 + }, + { + "name": "Calle de los Pradillos (Residencial Sanabria)", + "lat": "40.73202", + "lon": "-4.01314", + "id": 6970 + }, + { + "name": "Calle de los Robles (Uranización Los Corales)", + "lat": "40.73054", + "lon": "-4.00471", + "id": 36387 + }, + { + "name": "Calle del Cóndor (Uranización Los Corales)", + "lat": "40.73315", + "lon": "-4.00568", + "id": 36313 + }, + { + "name": "Calle del Nogal (Residencial Sanabria)", + "lat": "40.73040", + "lon": "-4.01183", + "id": 36416 + }, + { + "name": "Calle del Santísimo (Residencial Sanabria)", + "lat": "40.73036", + "lon": "-4.01394", + "id": 8952 + }, + { + "name": "Calle del Sol Naciente (Uranización Los Corales)", + "lat": "40.73152", + "lon": "-4.00600", + "id": 36406 + }, + { + "name": "Calle del Sotillo (Uranización Los Corales)", + "lat": "40.73277", + "lon": "-4.01098", + "id": 6972 + }, + { + "name": "Calle la Granja (Uranización Los Corales)", + "lat": "40.72994", + "lon": "-4.00501", + "id": 36385 + }, + { + "name": "Calle los Acebos (Uranización Los Corales)", + "lat": "40.72971", + "lon": "-4.00377", + "id": 36419 + }, + { + "name": "Pasaje de las Eras (Uranización Los Corales)", + "lat": "40.73223", + "lon": "-4.00954", + "id": 5479, + "buildings": [ + { + "name": "1", + "lat": "40.73154", + "lon": "-4.00986", + "postcode": "28491" + }, + { + "name": "2", + "lat": "40.73162", + "lon": "-4.00969", + "postcode": "28491" + }, + { + "name": "3", + "lat": "40.73165", + "lon": "-4.01003", + "postcode": "28491" + }, + { + "name": "4", + "lat": "40.73170", + "lon": "-4.00982", + "postcode": "28491" + }, + { + "name": "5", + "lat": "40.73223", + "lon": "-4.00954", + "postcode": "28491" + }, + { + "name": "6", + "lat": "40.73175", + "lon": "-4.00975", + "postcode": "28491" + }, + { + "name": "8", + "lat": "40.73176", + "lon": "-4.00958", + "postcode": "28491" + }, + { + "name": "10", + "lat": "40.73183", + "lon": "-4.00969", + "postcode": "28491" + }, + { + "name": "12", + "lat": "40.73188", + "lon": "-4.00954", + "postcode": "28491" + }, + { + "name": "14", + "lat": "40.73191", + "lon": "-4.00947", + "postcode": "28491" + } + ], + "intersectedStreets": [ + { + "name": "Calle del Sotillo (Uranización Los Corales)", + "lat": "40.73225", + "lon": "-4.00945" + }, + { + "name": "Calle de las Eras (Uranización Los Corales)", + "lat": "40.73137", + "lon": "-4.00958" + } + ] + }, + { + "name": "Plaza del Gargantón (Residencial Sanabria)", + "lat": "40.73071", + "lon": "-4.01074", + "id": 1673 + }, + { + "name": "Avenida del Rosal", + "lat": "40.72097", + "lon": "-4.01353", + "id": 6818 + }, + { + "name": "Barrio de la Fragua", + "lat": "40.73075", + "lon": "-4.01282", + "id": 3408 + }, + { + "name": "Calle Cuarto Creciente", + "lat": "40.73095", + "lon": "-4.00527", + "id": 48420 + }, + { + "name": "Calle Cuarto Menguante", + "lat": "40.73087", + "lon": "-4.00329", + "id": 36396 + }, + { + "name": "Calle Doctor Julio González Villasante", + "lat": "40.72913", + "lon": "-4.01716", + "id": 5660 + }, + { + "name": "Calle Huertona", + "lat": "40.73210", + "lon": "-4.01685", + "id": 36401 + }, + { + "name": "Calle Luna Llena", + "lat": "40.73144", + "lon": "-4.00398", + "id": 36418 + }, + { + "name": "Calle Luna Nueva", + "lat": "40.73129", + "lon": "-4.00553", + "id": 36413 + }, + { + "name": "Calle Namadilla", + "lat": "40.72700", + "lon": "-4.01239", + "id": 6851 + }, + { + "name": "Calle Praderas de San Sebastián", + "lat": "40.72832", + "lon": "-4.02057", + "id": 36402 + }, + { + "name": "Calle Prado Rubia", + "lat": "40.72757", + "lon": "-4.01269", + "id": 6852 + }, + { + "name": "Calle Presbítero Blanco", + "lat": "40.73136", + "lon": "-4.01310", + "id": 36391 + }, + { + "name": "Calle Saúco", + "lat": "40.73155", + "lon": "-4.01117", + "id": 6955 + }, + { + "name": "Calle de Prado Jerez", + "lat": "40.72838", + "lon": "-4.01555", + "id": 1908 + }, + { + "name": "Calle de Rafael Alvarado", + "lat": "40.72819", + "lon": "-4.01868", + "id": 36398 + }, + { + "name": "Calle de Ángel Rojas", + "lat": "40.72129", + "lon": "-4.01713", + "id": 36370 + }, + { + "name": "Calle del Arzobispado", + "lat": "40.73072", + "lon": "-4.01353", + "id": 49624 + }, + { + "name": "Calle del Párroco Desiderio García", + "lat": "40.73339", + "lon": "-4.01900", + "id": 36869 + }, + { + "name": "Calle del Señor Rubio", + "lat": "40.72872", + "lon": "-4.01398", + "id": 2470 + }, + { + "name": "Calle del Trigal", + "lat": "40.72936", + "lon": "-4.00490", + "id": 36399 + }, + { + "name": "Calle la Longuera", + "lat": "40.72921", + "lon": "-4.00336", + "id": 36409 + }, + { + "name": "Calle las Jaras", + "lat": "40.72858", + "lon": "-4.01385", + "id": 49623 + }, + { + "name": "Calle los Corrales", + "lat": "40.73191", + "lon": "-4.00842", + "id": 36408 + }, + { + "name": "Calle los Fresnos", + "lat": "40.72910", + "lon": "-4.00413", + "id": 36421 + }, + { + "name": "Camino Sur de la Maliciosa", + "lat": "40.76727", + "lon": "-3.96892", + "id": 55411 + }, + { + "name": "Carretera M-607", + "lat": "40.73292", + "lon": "-3.99484", + "id": 10727 + }, + { + "name": "Carretera de la Barranca", + "lat": "40.74207", + "lon": "-4.00351", + "id": 13632 + }, + { + "name": "PR-M 26", + "lat": "40.77368", + "lon": "-3.98319", + "id": 30601 + }, + { + "name": "Paseo de la Longuera", + "lat": "40.72593", + "lon": "-4.00321", + "id": 46080 + }, + { + "name": "Paseo de los Abetos", + "lat": "40.72254", + "lon": "-4.01960", + "id": 36347 + }, + { + "name": "Paseo de los Españoles", + "lat": "40.72804", + "lon": "-4.01643", + "id": 5728 + }, + { + "name": "Plaza de la Canaleja", + "lat": "40.73116", + "lon": "-4.01503", + "id": 9516 + }, + { + "name": "Plaza de los Ángeles", + "lat": "40.72921", + "lon": "-4.01456", + "id": 1669 + }, + { + "name": "Plaza del Doctor Gereda", + "lat": "40.72875", + "lon": "-4.01486", + "id": 2467 + }, + { + "name": "SLMN-4", + "lat": "40.76411", + "lon": "-3.98954", + "id": 57164 + }, + { + "name": "Senda Alakan", + "lat": "40.76455", + "lon": "-3.99437", + "id": 30603 + }, + { + "name": "Sendero Local", + "lat": "40.75508", + "lon": "-4.00329", + "id": 57821 + }, + { + "name": "Travesía de Abel", + "lat": "40.73049", + "lon": "-4.01458", + "id": 46084 + }, + { + "name": "Travesía de Prado Jerez", + "lat": "40.72788", + "lon": "-4.01518", + "id": 8953 + }, + { + "name": "Travesía de la Audiencia", + "lat": "40.72828", + "lon": "-4.01385", + "id": 36407 + }, + { + "name": "Travesía de la Encinilla", + "lat": "40.72941", + "lon": "-4.01516", + "id": 5802 + }, + { + "name": "Travesía de los Abetos", + "lat": "40.71879", + "lon": "-4.01527", + "id": 6819 + }, + { + "name": "Travesía de los Robles", + "lat": "40.73136", + "lon": "-4.00810", + "id": 5480 + }, + { + "name": "Travesía del Santísimo", + "lat": "40.72975", + "lon": "-4.01413", + "id": 5794 + }, + { + "name": "Travesía del Sotillo", + "lat": "40.73232", + "lon": "-4.00898", + "id": 5478 + }, + { + "name": "Trialera del Escorpión", + "lat": "40.75031", + "lon": "-4.02840", + "id": 45720 + }, + { + "name": "Urbanización Prado Molero", + "lat": "40.73007", + "lon": "-4.01831", + "id": 36389 + }, + { + "name": "Urbanización el Manantial", + "lat": "40.72531", + "lon": "-4.01778", + "id": 36392 + }, + { + "name": "Urbanización la Garza", + "lat": "40.72937", + "lon": "-4.01688", + "id": 36388 + }, + { + "name": "Urbanización las Brisas", + "lat": "40.73036", + "lon": "-4.01724", + "id": 36420 + }, + { + "name": "Urbanización las Brisas Manzana A", + "lat": "40.73072", + "lon": "-4.01685", + "id": 36412 + }, + { + "name": "Urbanización las Brisas Manzana B", + "lat": "40.73040", + "lon": "-4.01692", + "id": 36395 + }, + { + "name": "Urbanización las Brisas Manzana C", + "lat": "40.73020", + "lon": "-4.01670", + "id": 55675 + }, + { + "name": "Urbanización las Brisas Manzana D", + "lat": "40.72991", + "lon": "-4.01643", + "id": 55674 + }, + { + "name": "Urbanización las Brisas Manzana E", + "lat": "40.72978", + "lon": "-4.01705", + "id": 36410 + } + ], + "matchCity": 1, + "matchStreet": 1 + }, + { + "name": "Los Molinos", + "lat": "40.71481", + "lon": "-4.07423", + "id": 198063628, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Guadarrama a Navacerrada", + "lat": "40.71238", + "lon": "-4.06451", + "id": 13947, + "intersectedStreets": [ + { + "name": "Avenida de la Concordia", + "names": { + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada" + }, + "lat": "40.71228", + "lon": "-4.06451" + }, + { + "name": "Travesía Eduardo López Palop", + "lat": "40.71373", + "lon": "-4.06440" + } + ] + }, + { + "name": "Avenida de la Concordia", + "names": { + "alt_name": "Carretera de Guadarrama (AP-6) a Navacerrada" + }, + "lat": "40.70960", + "lon": "-4.06666", + "id": 13948, + "intersectedStreets": [ + { + "name": "Calle Arizona", + "lat": "40.71143", + "lon": "-4.06505" + }, + { + "name": "Calle del Olmo", + "lat": "40.71100", + "lon": "-4.06546" + }, + { + "name": "Travesía de Majalastablas", + "lat": "40.71052", + "lon": "-4.06586" + }, + { + "name": "Calle de Santa Engracia", + "lat": "40.70960", + "lon": "-4.06666" + }, + { + "name": "Calle San Pascual", + "lat": "40.70869", + "lon": "-4.06745" + }, + { + "name": "Paseo Miguel Menéndez Boneta", + "lat": "40.70725", + "lon": "-4.06818" + }, + { + "name": "Calle Pedro Gutiérrez", + "lat": "40.70725", + "lon": "-4.06818" + }, + { + "name": "Carretera de Guadarrama a Navacerrada", + "lat": "40.71230", + "lon": "-4.06451" + }, + { + "name": "Avenida de los Molinos", + "lat": "40.71218", + "lon": "-4.06475" + }, + { + "name": "Calle de la Capilla", + "lat": "40.70649", + "lon": "-4.06848" + }, + { + "name": "Calle San Joaquín (Matarrubia)", + "lat": "40.70603", + "lon": "-4.06868" + }, + { + "name": "Calle Matarrubias", + "lat": "40.70447", + "lon": "-4.06940" + }, + { + "name": "Calle San Agustín", + "lat": "40.70366", + "lon": "-4.06988" + }, + { + "name": "Calle Buenos Aires (Matarrubia)", + "lat": "40.70366", + "lon": "-4.06988" + }, + { + "name": "Calle Miralmonte", + "lat": "40.70280", + "lon": "-4.07041" + }, + { + "name": "Calle Bellas Vistas", + "lat": "40.70154", + "lon": "-4.07110" + }, + { + "name": "Calle del Río Guadalquivir (Matarrubia)", + "lat": "40.70073", + "lon": "-4.07157" + }, + { + "name": "Calle Río Duero (Matarrubia)", + "lat": "40.69980", + "lon": "-4.07204" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Puerto de Navacerrada", + "lat": "40.78629", + "lon": "-4.00266", + "id": 303570891, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Calle Dos Castillas", + "lat": "40.78782", + "lon": "-4.00201", + "id": 59815 + }, + { + "name": "Calle Vitoria", + "lat": "40.78473", + "lon": "-4.00419", + "id": 17273 + }, + { + "name": "Calle de Peñalara", + "lat": "40.78493", + "lon": "-4.00093", + "id": 36632 + }, + { + "name": "Calle de la Bola del Mundo", + "lat": "40.78400", + "lon": "-4.00437", + "id": 17272 + }, + { + "name": "Calle de la Estación", + "lat": "40.78501", + "lon": "-4.00267", + "id": 55425 + }, + { + "name": "Calle de la Virgen de las Nieves", + "lat": "40.78327", + "lon": "-4.00308", + "id": 31362 + }, + { + "name": "Camino Schmidt", + "lat": "40.78824", + "lon": "-4.02630", + "id": 34134 + }, + { + "name": "Camino del Calvario", + "lat": "40.77029", + "lon": "-4.01235", + "id": 56605 + }, + { + "name": "Carretera de Collado Villalba a Navacerrada", + "lat": "40.76806", + "lon": "-4.00982", + "id": 52476 + }, + { + "name": "Carril del Gallo", + "lat": "40.80168", + "lon": "-4.03818", + "id": 58970 + }, + { + "name": "Cuerda Larga", + "lat": "40.78579", + "lon": "-3.97995", + "id": 18495 + }, + { + "name": "La Bola del Mundo", + "lat": "40.78514", + "lon": "-3.98061", + "id": 59123 + }, + { + "name": "PR-8 Senda Herreros", + "lat": "40.78413", + "lon": "-4.01647", + "id": 36544 + }, + { + "name": "Calle Ginos", + "lat": "40.78542", + "lon": "-4.00259", + "id": 17256 + }, + { + "name": "El Bosque", + "lat": "40.78813", + "lon": "-4.00844", + "id": 36543 + } + ], + "matchCity": 1, + "matchStreet": 1 + }, + { + "name": "Moraleja de Enmedio", + "enName": "Moraleja de Enmedio", + "names": { + "ru": "Уманес-де-Мадрид", + "ja": "モラレハ・デ・エンメディオ", + "zh": "莫拉莱哈登梅迪奥" + }, + "lat": "40.26155", + "lon": "-3.86121", + "id": 306945944, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Calle de Navacerrada", + "lat": "40.26170", + "lon": "-3.86255", + "id": 51011, + "intersectedStreets": [ + { + "name": "Calle de Somosierra", + "lat": "40.26194", + "lon": "-3.86227" + }, + { + "name": "Travesía Real", + "lat": "40.26194", + "lon": "-3.86227" + }, + { + "name": "Calle Real", + "lat": "40.26155", + "lon": "-3.86296" + } + ] + } + ], + "matchStreet": 1 + } + ] +} \ No newline at end of file From d587bee30952ee9afeee1a4f2c2e03ffbfa196ed Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 17:30:43 +0200 Subject: [PATCH 045/108] Fix search & terrain action --- .../net/osmand/search/core/ObjectType.java | 20 +++++++++---------- .../net/osmand/search/core/SearchPhrase.java | 17 ++++++++-------- .../net/osmand/search/core/SearchResult.java | 17 +++++----------- OsmAnd/res/values/strings.xml | 2 +- .../osmand/plus/srtmplugin/TerrainAction.java | 2 +- 5 files changed, 26 insertions(+), 32 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java b/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java index 64ed8710cd..4de83b932d 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java @@ -45,27 +45,27 @@ public enum ObjectType { return null; } - public static double getTypeWeight(ObjectType t) { + public static int getTypeWeight(ObjectType t) { if (t == null) { - return 1.0; + return 1; } switch (t) { case CITY: - return 1.0; + return 1; case VILLAGE: - return 1.0; + return 1; case POSTCODE: - return 1.0; + return 1; case STREET: - return 2.0; + return 2; case HOUSE: - return 3.0; + return 3; case STREET_INTERSECTION: - return 3.0; + return 3; case POI: - return 2.0; + return 2; default: - return 1.0; + return 1; } } } diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java index 7a8e506647..41cc8b7929 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java @@ -724,16 +724,17 @@ public class SearchPhrase { } public void countUnknownWordsMatch(SearchResult sr, String localeName, Collection otherNames) { - if(unknownWords.size() > 0) { - for(int i = 0; i < unknownWords.size(); i++) { - if(unknownWordsMatcher.size() == i) { - unknownWordsMatcher.add(new NameStringMatcher(unknownWords.get(i), - i < unknownWords.size() - 1 || isLastUnknownSearchWordComplete() ? StringMatcherMode.CHECK_EQUALS_FROM_SPACE : - StringMatcherMode.CHECK_STARTS_FROM_SPACE)); + if (unknownWords.size() > 0) { + for (int i = 0; i < unknownWords.size(); i++) { + if (unknownWordsMatcher.size() == i) { + unknownWordsMatcher.add(new NameStringMatcher(unknownWords.get(i), + i < unknownWords.size() - 1 || isLastUnknownSearchWordComplete() + ? StringMatcherMode.CHECK_EQUALS_FROM_SPACE + : StringMatcherMode.CHECK_STARTS_FROM_SPACE)); } NameStringMatcher ms = unknownWordsMatcher.get(i); - if(ms.matches(localeName) || ms.matches(otherNames)) { - if(sr.otherWordsMatch == null) { + if (ms.matches(localeName) || ms.matches(otherNames)) { + if (sr.otherWordsMatch == null) { sr.otherWordsMatch = new TreeSet<>(); } sr.otherWordsMatch.add(unknownWords.get(i)); diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java index 93f0acfafd..8c235713b4 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java @@ -33,20 +33,13 @@ public class SearchResult { this.requiredSearchPhrase = sp; } - public double getUnknownPhraseMatchWeight() { - return getUnknownPhraseMatchWeight(false); - } - - private double getUnknownPhraseMatchWeight(boolean isHouse) { - double res = 0; - isHouse = isHouse || objectType == ObjectType.HOUSE; + public int getUnknownPhraseMatchWeight() { if (unknownPhraseMatches) { - res = isHouse ? ObjectType.getTypeWeight(ObjectType.HOUSE) : ObjectType.getTypeWeight(objectType); + return ObjectType.getTypeWeight(objectType); + } else if (parentSearchResult != null) { + return parentSearchResult.getUnknownPhraseMatchWeight(); } - if (res == 0 && parentSearchResult != null) { - return parentSearchResult.getUnknownPhraseMatchWeight(isHouse); - } - return res; + return 0; } public int getFoundWordCount() { diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 8308881ea1..65a1231387 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -23,7 +23,7 @@ Parking positions Create / Edit POI Button showing or hiding public transport on the map. - Show / hide public transport + Show/hide public transport Show public transport Hide public transport diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainAction.java b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainAction.java index 43f94c2401..2202a1f174 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainAction.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainAction.java @@ -16,7 +16,7 @@ import net.osmand.plus.quickaction.QuickActionType; public class TerrainAction extends QuickAction { public static final QuickActionType TYPE = new QuickActionType(30, - "contourlines.showhide", TerrainAction.class). + "terrain.showhide", TerrainAction.class). nameRes(R.string.quick_action_show_hide_hillshade).iconRes(R.drawable.ic_action_hillshade_dark).nonEditable(). category(QuickActionType.CONFIGURE_MAP); From 108c2b5704a11ed60d4f2fe272b227343f6d3969 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 18:53:55 +0200 Subject: [PATCH 046/108] Fix search type and more comments --- .../java/net/osmand/search/SearchUICore.java | 12 ++++--- .../net/osmand/search/core/ObjectType.java | 14 +++------ .../net/osmand/search/core/SearchResult.java | 14 ++++++--- .../search/free_street_portland.json | 12 +++---- .../test/resources/search/navacerrada.json | 31 +++++++++++++++++-- 5 files changed, 54 insertions(+), 29 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java index 7eec13cd94..1739d83fb6 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java @@ -872,16 +872,18 @@ public class SearchUICore { return topVisible1 ? -1 : 1; } break; - case UNKNOWN_PHRASE_MATCH_WEIGHT: - if (o1.getUnknownPhraseMatchWeight() != o2.getUnknownPhraseMatchWeight()) { - return -Double.compare(o1.getUnknownPhraseMatchWeight(), o2.getUnknownPhraseMatchWeight()); - } - break; case FOUND_WORD_COUNT: if (o1.getFoundWordCount() != o2.getFoundWordCount()) { return -Algorithms.compare(o1.getFoundWordCount(), o2.getFoundWordCount()); } break; + case UNKNOWN_PHRASE_MATCH_WEIGHT: + // here we check how much each sub search result matches the phrase + // also we sort it by type house -> street/poi -> city/postcode/village/other + if (o1.getUnknownPhraseMatchWeight() != o2.getUnknownPhraseMatchWeight()) { + return -Double.compare(o1.getUnknownPhraseMatchWeight(), o2.getUnknownPhraseMatchWeight()); + } + break; case SEARCH_DISTANCE_IF_NOT_BY_NAME: if (!c.sortByName) { double s1 = o1.getSearchDistance(c.loc); diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java b/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java index 4de83b932d..3236fa6032 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java @@ -50,20 +50,16 @@ public enum ObjectType { return 1; } switch (t) { - case CITY: - return 1; - case VILLAGE: - return 1; - case POSTCODE: - return 1; - case STREET: - return 2; case HOUSE: - return 3; case STREET_INTERSECTION: return 3; + case STREET: case POI: return 2; + case CITY: + case VILLAGE: + case POSTCODE: + return 1; default: return 1; } diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java index 8c235713b4..9319e225ef 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java @@ -33,13 +33,17 @@ public class SearchResult { this.requiredSearchPhrase = sp; } - public int getUnknownPhraseMatchWeight() { + public double getUnknownPhraseMatchWeight() { + // if result is a complete match in the search we prioritize it highers + double res = 0; if (unknownPhraseMatches) { - return ObjectType.getTypeWeight(objectType); - } else if (parentSearchResult != null) { - return parentSearchResult.getUnknownPhraseMatchWeight(); + res = ObjectType.getTypeWeight(objectType); } - return 0; + if (parentSearchResult != null) { + // 5 is a maximum type + res += parentSearchResult.getUnknownPhraseMatchWeight() / 5; + } + return res; } public int getFoundWordCount() { diff --git a/OsmAnd-java/src/test/resources/search/free_street_portland.json b/OsmAnd-java/src/test/resources/search/free_street_portland.json index a4926a4877..d39fbcab43 100644 --- a/OsmAnd-java/src/test/resources/search/free_street_portland.json +++ b/OsmAnd-java/src/test/resources/search/free_street_portland.json @@ -12,20 +12,16 @@ "phrase": "48 Free Street Portland", "results": [ "48.0, ", - "48, Free Street (Downtown), Portland"], + "48, Free Street (Downtown), Portland" + ], "extra-results": [ - "48, Portland Street, North Berwick", + "48, Portland Street, North Berwick", "Free Street (Downtown), Portland", "Free Street (Ferry Village), South Portland", "Portland Street", - "48, Portland Avenue, Old Orchard Beach", "Portland Street (Downtown), Portland", "Portland Street Pier, South Portland", - "Portland Street, Yarmouth", - "Portland Street, North Berwick", - "Portland Street, Berwick", - "Portland Street, South Berwick", - "Portland Street, Fryeburg" + "Portland Street, Yarmouth" ], "amenities": [ { diff --git a/OsmAnd-java/src/test/resources/search/navacerrada.json b/OsmAnd-java/src/test/resources/search/navacerrada.json index 1358fb0e32..b4c94a734e 100644 --- a/OsmAnd-java/src/test/resources/search/navacerrada.json +++ b/OsmAnd-java/src/test/resources/search/navacerrada.json @@ -14,8 +14,9 @@ "5, Calle de las Eras (Uranización Los Corales), Navacerrada" ], "extra-results": [ - "Calle de las Eras (Uranización Los Corales), Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "Calle de las Eras (Uranización Los Corales), Navacerrada", "Calle del Sotillo (Uranización Los Corales), Pasaje de las Eras (Uranización Los Corales), Navacerrada", + "Calle del Puerto de Navacerrada, Las Nieves", "5, Calle Navacerrada (Urb. Las Suertes), Las Suertes", "50, Calle de Francisco Navacerrada, Salamanca", "52, Calle de Francisco Navacerrada, Salamanca", @@ -26,7 +27,6 @@ "57, Calle de Francisco Navacerrada, Salamanca", "58, Calle de Francisco Navacerrada, Salamanca", "59, Calle de Francisco Navacerrada, Salamanca", - "Calle del Puerto de Navacerrada, Las Nieves", "Pasaje de las Eras (Uranización Los Corales), Navacerrada", "Calle Barrio de las Peñas, Navacerrada", "Calle de las Cruces (Residencial Sanabria), Navacerrada", @@ -47,6 +47,33 @@ "Calle de los Enebros (Uranización Los Corales), Navacerrada", "Calle de la Bola del Mundo (Residencial Sanabria), Navacerrada", "Calle de la Maliciosa (Residencial Sanabria), Navacerrada", + "Calle de la Perdiz, Navacerrada", + "Calle de la Magdalena, Navacerrada", + "Calle las Jaras, Navacerrada", + "Calle de la Audiencia, Navacerrada", + "Calle de Prado Jerez, Navacerrada", + "Calle de Carmen Conde (Residencial Sanabria), Navacerrada", + "Calle de la Iglesia, Navacerrada", + "Calle de la Tejera, Navacerrada", + "Calle de la Encinilla, Navacerrada", + "Calle de la Canaleja (Residencial Sanabria), Navacerrada", + "Calle de Rafael Alvarado, Navacerrada", + "Calle de Andrés Segovia, Navacerrada", + "Calle de los Pradillos (Residencial Sanabria), Navacerrada", + "Calle de Abel, Navacerrada", + "Calle Praderas de San Sebastián, Navacerrada", + "Calle de San Sebastián (Residencial Sanabria), Navacerrada", + "Calle de Álvaro Iglesia, Navacerrada", + "Calle de los Arcos, Navacerrada", + "Calle de Peñalara, Puerto de Navacerrada", + "Calle de la Bola del Mundo, Puerto de Navacerrada", + "Calle de la Estación, Puerto de Navacerrada", + "Calle Ginos, Puerto de Navacerrada", + "Calle Vitoria, Puerto de Navacerrada", + "Calle Dos Castillas, Puerto de Navacerrada", + "Travesía de las Huertas, Navacerrada", + "Vereda de las Encinillas, Navacerrada", + "Centro Municipal de Mayores «Navacerrada»", ], "amenities": [ { From edd10cb092f1e928854e430f0e88395551d2086e Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 19:41:23 +0200 Subject: [PATCH 047/108] Fix #9061 --- .../src/main/java/net/osmand/search/core/ObjectType.java | 3 ++- .../src/main/java/net/osmand/search/core/SearchPhrase.java | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java b/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java index 3236fa6032..9844f52646 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/ObjectType.java @@ -52,8 +52,9 @@ public enum ObjectType { switch (t) { case HOUSE: case STREET_INTERSECTION: - return 3; + return 4; case STREET: + return 3; case POI: return 2; case CITY: diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java index 41cc8b7929..8f6799e3be 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java @@ -121,7 +121,7 @@ public class SearchPhrase { int i1 = CommonWords.getCommonSearch(o1.toLowerCase()); int i2 = CommonWords.getCommonSearch(o2.toLowerCase()); if (i1 != i2) { - return icompare(i1, i2); + return -icompare(i1, i2); } // compare length without numbers to not include house numbers return -icompare(lengthWithoutNumbers(o1), lengthWithoutNumbers(o2)); From 022ed7e705b7acb80f4336a386ea690a2234eefc Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 19:55:19 +0200 Subject: [PATCH 048/108] Fix critical bug in search comparator --- .../src/main/java/net/osmand/search/core/SearchPhrase.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java index 8f6799e3be..b15c5a377a 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java @@ -121,6 +121,11 @@ public class SearchPhrase { int i1 = CommonWords.getCommonSearch(o1.toLowerCase()); int i2 = CommonWords.getCommonSearch(o2.toLowerCase()); if (i1 != i2) { + if(i1 == -1) { + return -1; + } else if(i2 == -1) { + return 1; + } return -icompare(i1, i2); } // compare length without numbers to not include house numbers From 0944dc16f9b783dd152c64f8ea4ba825e4bd2927 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 21:26:56 +0200 Subject: [PATCH 049/108] Temporarily fix tests --- .../osmand/search/core/SearchCoreFactory.java | 2 +- .../net/osmand/search/core/SearchPhrase.java | 5 +- .../net/osmand/search/core/SearchResult.java | 5 +- .../net/osmand/search/SearchUICoreTest.java | 7 +- .../test/resources/search/spring_street.json | 142 +++++++++++------- 5 files changed, 103 insertions(+), 58 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java index ed9924d69f..c3923759af 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java @@ -146,7 +146,7 @@ public class SearchCoreFactory { phrase.countUnknownWordsMatch(res); // int cnt = resultMatcher.getCount(); List ws = phrase.getUnknownSearchWords(res.otherWordsMatch); - if(!res.firstUnknownWordMatches) { + if (!res.firstUnknownWordMatches) { ws.add(phrase.getUnknownSearchWord()); } // publish result to set parentSearchResult before search diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java index b15c5a377a..869c44d005 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java @@ -468,7 +468,7 @@ public class SearchPhrase { prnt = prnt.parentSearchResult; } sp.words.addAll(0, this.words); - if(unknownWords != null) { + if (unknownWords != null) { sp.lastUnknownSearchWordComplete = lastComplete; for (int i = 0; i < unknownWords.size(); i++) { if (i == 0) { @@ -477,6 +477,9 @@ public class SearchPhrase { sp.unknownWords.add(unknownWords.get(i)); } } + // TODO +// sp.rawUnknownSearchPhrase = rawUnknownSearchPhrase; +// sp.unknownSearchPhrase = unknownSearchPhrase; } return sp; } diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java index 9319e225ef..269694eae9 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchResult.java @@ -40,8 +40,9 @@ public class SearchResult { res = ObjectType.getTypeWeight(objectType); } if (parentSearchResult != null) { - // 5 is a maximum type - res += parentSearchResult.getUnknownPhraseMatchWeight() / 5; + // 10 > maximum type + // res = Math.max(res,parentSearchResult.getUnknownPhraseMatchWeight()) ; + res += parentSearchResult.getUnknownPhraseMatchWeight() / 10; } return res; } diff --git a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java index 0af85e9acb..40a8585cb9 100644 --- a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java +++ b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java @@ -181,9 +181,12 @@ public class SearchUICoreTest { String present = result.toString(); //System.out.println(present); if(!Algorithms.stringsEqual(expected, present)) { - System.out.println(String.format("Mismatch for '%s' != '%s'. Result: ", expected, present)); + System.out.println(String.format("Mismatch for '%s' != '%s' (%d, %.3f, %s). Result: ", expected, + present, result.getFoundWordCount(), result.getUnknownPhraseMatchWeight(), result.objectType.toString())); for (SearchResult r : searchResults) { - System.out.println("\t\""+r.toString()+"\","); + System.out.println(String.format("\t\"%s\",", r.toString())); +// System.out.println(String.format("\"%s\", (%d, %.3f, %s),", r.toString(), +// r.getFoundWordCount(), r.getUnknownPhraseMatchWeight(), r.objectType.toString())); } } Assert.assertEquals(expected, present); diff --git a/OsmAnd-java/src/test/resources/search/spring_street.json b/OsmAnd-java/src/test/resources/search/spring_street.json index 5ad960f31b..c0c6e4e189 100644 --- a/OsmAnd-java/src/test/resources/search/spring_street.json +++ b/OsmAnd-java/src/test/resources/search/spring_street.json @@ -12,58 +12,96 @@ "phrase": "spring street", "results": [ "Spring (Natural)", - "Spring (Spring / Natural)", - "Spring (Ice rink / Sport)", - "Spring (Bridge / Transport construction)", - "Spring Street, South Nyack", - "Spring Street, Tomkins Cove", - "Spring Street, Southfields", - "Spring Street, Hastings-on-Hudson", - "Spring Street, Pleasantville", - "Spring Street (Mount Pleasant), Hawthorne", - "Spring Street, Durland", - "Spring Street, Warwick", - "Spring Street, Nelsonville", - "Spring Street, Goshen", - "Spring Street (Little Italy), Manhattan", - "Spring Street, Maybrook", - "West Spring Street, Maybrook", - "Spring Street, South Salem", - "Spring Street, Groveville", - "Spring Street, East Middletown", - "Spring Street, Montgomery", - "Spring Street, Chelsea", - "Spring Street, Wappingers Falls", - "Spring Street, Cold Spring Harbor", - "Spring Street, Staten Island", - "Spring Street, East Meadow", - "Spring Street, Inwood", - "Spring Street, Port Jervis", - "Spring Street, Roosevelt", - "Spring Street, Pawling", - "Spring Street, Fairview", - "Spring Street (Wyandanch), Wheatley Heights", - "Spring Street, Wyandanch", - "Spring Street, East Massapequa", - "Spring Street, Ellenville", - "Spring Street, Monticello", - "Spring Street, Tillson", - "Spring Street, Port Jefferson", - "Spring Street (Smallwood), Bethel", - "Spring Street, Liberty", - "Spring Street (Livingston Manor), Rockland", - "Spring Street, Livingston Manor", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street", - "Spring Street" + "Spring (Spring / Natural)", + "Spring (Ice rink / Sport)", + "Spring (Bridge / Transport construction)", + "Spring Street, Cold Spring Harbor", + "Spring Street, South Nyack", + "Spring Street, Tomkins Cove", + "Spring Street, Southfields", + "Spring Street, Hastings-on-Hudson", + "Spring Street, Pleasantville", + "Spring Street (Mount Pleasant), Hawthorne", + "Spring Street, Durland", + "Spring Street, Warwick", + "Spring Street, Nelsonville", + "Spring Street, Goshen", + "Spring Street (Little Italy), Manhattan", + "Spring Street, Maybrook", + "West Spring Street, Maybrook", + "Spring Street, South Salem", + "Spring Street, Groveville", + "Spring Street, East Middletown", + "Spring Street, Montgomery", + "Spring Street, Chelsea", + "Spring Street, Wappingers Falls", + "Spring Street, Staten Island", + "Spring Street, East Meadow", + "Spring Street, Inwood", + "Spring Street, Port Jervis", + "Spring Street, Roosevelt", + "Spring Street, Pawling", + "Spring Street, Fairview", + "Spring Street (Wyandanch), Wheatley Heights", + "Spring Street, Wyandanch", + "Spring Street, East Massapequa", + "Spring Street, Ellenville", + "Spring Street, Monticello", + "Spring Street, Tillson", + "Spring Street, Port Jefferson", + "Spring Street (Smallwood), Bethel", + "Spring Street, Liberty", + "Spring Street (Livingston Manor), Rockland", + "Spring Street, Livingston Manor", + "Market Street, Cold Spring", + "New Street, Cold Spring", + "West Street, Cold Spring", + "Fish Street, Cold Spring", + "North Street, Cold Spring", + "Rock Street, Cold Spring", + "Stone Street, Cold Spring", + "Wall Street, Cold Spring", + "Cross Street, Cold Spring", + "Main Street, Cold Spring", + "Chestnut Street, Cold Spring", + "Furnace Street, Cold Spring", + "Garden Street, Cold Spring", + "Church Street, Cold Spring", + "Oak Street, Cold Spring", + "Cherry Street, Cold Spring", + "High Street, Cold Spring", + "Academy Street, Cold Spring", + "Haldane Street, Cold Spring", + "West Bank Street, Cold Spring", + "B Street, Cold Spring", + "West Belvedere Street, Cold Spring", + "Parrot Street, Cold Spring", + "Bank Street, Cold Spring", + "Orchard Street, Cold Spring", + "East Belvedere Street, Cold Spring", + "Pine Street, Cold Spring", + "Parsonage Street, Cold Spring", + "Hamilton Street, Cold Spring", + "Fair Street, Cold Spring", + "Cedar Street, Cold Spring", + "Flora Street, Cold Spring Harbor", + "West Main Street, Cold Spring Harbor", + "Grove Street, Cold Spring Harbor", + "Midland Street, Cold Spring Harbor", + "Rusco Street, Cold Spring Harbor", + "Main Street, Cold Spring Harbor", + "Chestnut Street, Cold Spring Harbor", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street" ], "amenities": [ { From 9ca1dbd9cfcb37c5f049f10e3025b2846ff224ca Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Sun, 24 May 2020 22:05:54 +0200 Subject: [PATCH 050/108] Temporarily fix test results --- .../java/net/osmand/search/SearchUICore.java | 7 +- .../osmand/search/core/SearchCoreFactory.java | 8 +-- .../net/osmand/search/core/SearchPhrase.java | 9 +-- .../net/osmand/search/SearchUICoreTest.java | 9 ++- .../test/resources/search/spring_street.json | 70 ++++++++++++++++++- 5 files changed, 84 insertions(+), 19 deletions(-) diff --git a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java index 1739d83fb6..b49ec81d94 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/SearchUICore.java @@ -651,6 +651,10 @@ public class SearchUICore { this.parentSearchResult = parentSearchResult; return prev; } + + public SearchResult getParentSearchResult() { + return parentSearchResult; + } public List getRequestResults() { return requestResults; @@ -730,9 +734,9 @@ public class SearchUICore { object.localeName = object.alternateName; object.alternateName = null; } + object.parentSearchResult = parentSearchResult; if (matcher == null || matcher.publish(object)) { count++; - object.parentSearchResult = parentSearchResult; if (totalLimit == -1 || count < totalLimit) { requestResults.add(object); } @@ -740,6 +744,7 @@ public class SearchUICore { } return false; } + @Override public boolean isCancelled() { boolean cancelled = request != requestNumber.get(); diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java index c3923759af..0d01c98391 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchCoreFactory.java @@ -154,14 +154,10 @@ public class SearchCoreFactory { if (!ws.isEmpty() && api != null && api.isSearchAvailable(phrase)) { SearchPhrase nphrase = phrase.selectWord(res, ws, phrase.isLastUnknownSearchWordComplete()); - SearchResult prev = resultMatcher.setParentSearchResult(res); - res.parentSearchResult = prev; + resultMatcher.setParentSearchResult(res); api.search(nphrase, resultMatcher); - resultMatcher.setParentSearchResult(prev); + resultMatcher.setParentSearchResult(res.parentSearchResult); } -// if (resultMatcher.getCount() == cnt) { -// resultMatcher.publish(res); -// } } @Override diff --git a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java index 869c44d005..3e153f906e 100644 --- a/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java +++ b/OsmAnd-java/src/main/java/net/osmand/search/core/SearchPhrase.java @@ -463,23 +463,24 @@ public class SearchPhrase { SearchPhrase sp = new SearchPhrase(this.settings, this.clt); addResult(res, sp); SearchResult prnt = res.parentSearchResult; - while(prnt != null) { + while (prnt != null) { addResult(prnt, sp); prnt = prnt.parentSearchResult; } sp.words.addAll(0, this.words); if (unknownWords != null) { sp.lastUnknownSearchWordComplete = lastComplete; + StringBuilder genUnknownSearchPhrase = new StringBuilder(); for (int i = 0; i < unknownWords.size(); i++) { if (i == 0) { sp.unknownSearchWordTrim = unknownWords.get(0); } else { sp.unknownWords.add(unknownWords.get(i)); } + genUnknownSearchPhrase.append(unknownWords.get(i)).append(" "); } - // TODO -// sp.rawUnknownSearchPhrase = rawUnknownSearchPhrase; -// sp.unknownSearchPhrase = unknownSearchPhrase; + + sp.rawUnknownSearchPhrase = sp.unknownSearchPhrase = genUnknownSearchPhrase.toString().trim(); } return sp; } diff --git a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java index 40a8585cb9..13c9668741 100644 --- a/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java +++ b/OsmAnd-java/src/test/java/net/osmand/search/SearchUICoreTest.java @@ -179,14 +179,13 @@ public class SearchUICoreTest { for (SearchResult result : searchResults) { String expected = results.get(i++); String present = result.toString(); - //System.out.println(present); - if(!Algorithms.stringsEqual(expected, present)) { + if (!Algorithms.stringsEqual(expected, present)) { System.out.println(String.format("Mismatch for '%s' != '%s' (%d, %.3f, %s). Result: ", expected, present, result.getFoundWordCount(), result.getUnknownPhraseMatchWeight(), result.objectType.toString())); for (SearchResult r : searchResults) { - System.out.println(String.format("\t\"%s\",", r.toString())); -// System.out.println(String.format("\"%s\", (%d, %.3f, %s),", r.toString(), -// r.getFoundWordCount(), r.getUnknownPhraseMatchWeight(), r.objectType.toString())); +// System.out.println(String.format("\t\"%s\",", r.toString())); + System.out.println(String.format("\"%s\", (%d, %.3f, %s),", r.toString(), + r.getFoundWordCount(), r.getUnknownPhraseMatchWeight(), r.objectType.toString())); } } Assert.assertEquals(expected, present); diff --git a/OsmAnd-java/src/test/resources/search/spring_street.json b/OsmAnd-java/src/test/resources/search/spring_street.json index c0c6e4e189..b8f10d139a 100644 --- a/OsmAnd-java/src/test/resources/search/spring_street.json +++ b/OsmAnd-java/src/test/resources/search/spring_street.json @@ -11,11 +11,10 @@ }, "phrase": "spring street", "results": [ - "Spring (Natural)", + "Spring (Natural)", "Spring (Spring / Natural)", "Spring (Ice rink / Sport)", "Spring (Bridge / Transport construction)", - "Spring Street, Cold Spring Harbor", "Spring Street, South Nyack", "Spring Street, Tomkins Cove", "Spring Street, Southfields", @@ -35,6 +34,7 @@ "Spring Street, Montgomery", "Spring Street, Chelsea", "Spring Street, Wappingers Falls", + "Spring Street, Cold Spring Harbor", "Spring Street, Staten Island", "Spring Street, East Meadow", "Spring Street, Inwood", @@ -101,7 +101,71 @@ "Spring Street", "Spring Street", "Spring Street", - "Spring Street" + "Spring Street", + "Academy Street, Cold Spring", + "Bank Street, Cold Spring", + "B Street, Cold Spring", + "Cedar Street, Cold Spring", + "Cherry Street, Cold Spring", + "Chestnut Street, Cold Spring", + "Church Street, Cold Spring", + "Cross Street, Cold Spring", + "East Belvedere Street, Cold Spring", + "Fair Street, Cold Spring", + "Fish Street, Cold Spring", + "Furnace Street, Cold Spring", + "Garden Street, Cold Spring", + "Haldane Street, Cold Spring", + "Hamilton Street, Cold Spring", + "High Street, Cold Spring", + "Main Street, Cold Spring", + "Market Street, Cold Spring", + "New Street, Cold Spring", + "North Street, Cold Spring", + "Oak Street, Cold Spring", + "Orchard Street, Cold Spring", + "Parrot Street, Cold Spring", + "Parsonage Street, Cold Spring", + "Pine Street, Cold Spring", + "Rock Street, Cold Spring", + "Stone Street, Cold Spring", + "Wall Street, Cold Spring", + "West Bank Street, Cold Spring", + "West Belvedere Street, Cold Spring", + "West Street, Cold Spring", + "Chestnut Street, Cold Spring Harbor", + "Flora Street, Cold Spring Harbor", + "Grove Street, Cold Spring Harbor", + "Main Street, Cold Spring Harbor", + "Midland Street, Cold Spring Harbor", + "Rusco Street, Cold Spring Harbor", + "Spring Street, Cold Spring Harbor", + "West Main Street, Cold Spring Harbor", + "Kraw Street, Spring Glen", + "Munro Street, Cold Spring", + "State Street, Cold Spring", + "Spring Street Salt Shed", + "6th Avenue & Spring Street", + "Spring Street Park", + "Broadway & Spring Street", + "Broadway/Spring Street", + "Spring Street Station (6) - Downtown", + "Spring Street Station (6) - Uptown & The Bronx", + "Richmond Road & Spring Street", + "West Spring Street School", + "Spring Street Gallery", + "Spring Street Apartments", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", + "Spring Street", ], "amenities": [ { From df2c0f9b00422fb20a02b48fbbc10a62ebdffea0 Mon Sep 17 00:00:00 2001 From: Hardy Date: Mon, 25 May 2020 00:19:27 +0200 Subject: [PATCH 051/108] String improvements --- OsmAnd/res/values-de/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 83ba9689b7..5db2beba1c 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -2224,7 +2224,7 @@ Lon %2$s Wegpunkte, POI, markierte Orte Richtungsänderungen entlang dieser Route Neuen Ordner hinzufügen - Steigung + Gefälle Bevorzugte Geländeform: flach oder bergig. Berber Keine anonymen App-Nutzungsdaten versenden @@ -3602,11 +3602,11 @@ Lon %2$s Transparenz Stellen Sie die minimale und maximale Zoomstufe ein, bei der die Ebene angezeigt wird. Gelände - Pisten + Gefälle Aktivieren Sie diese Option, um die Schatten- oder Hangkarte anzuzeigen. Weitere Informationen zu diesen Kartentypen finden Sie auf unserer Website. Legende - Lesen Sie mehr über Pisten in %1$s. - Zusätzliche Karten sind erforderlich, um Pisten auf der Karte anzuzeigen. + Lesen Sie mehr über Gefällekarten in %1$s. + Zusätzliche Karten sind erforderlich, um Gefälle auf der Karte anzuzeigen. Für die Darstellung der Schummerung werden zusätzliche Karten benötigt. Min Schummerungs-Karte mit dunklen Schattierungen zur Darstellung von Hängen, Gipfeln und Niederungen. @@ -3615,7 +3615,7 @@ Lon %2$s Skitouren Schneemobil Benutzerdefiniertes OsmAnd-Plugin - Pisten verwendet Farben, um die Geländesteilheit zu visualisieren. + Gefällekarten verwendet Farben, um die Geländesteilheit zu visualisieren. Einen anderen Punkt durch diesen ersetzen Die Änderungen wurden auf das \'%1$s\' Profil angewendet. Konnte nicht von \'%1$s\' lesen. @@ -3730,4 +3730,4 @@ Lon %2$s \nSchalten Sie nicht verwendete Plugins aus, um alle ihre Steuerelemente auszublenden. %1$s. Schubladenelemente, Kontextmenü Schublade - \ No newline at end of file + From aca45114995f245d366ebda7bff63ad2983080b7 Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Sun, 24 May 2020 09:28:07 +0000 Subject: [PATCH 052/108] Translated using Weblate (French) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-fr/strings.xml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 1e16e8d152..35bee79f82 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -2376,7 +2376,7 @@ Mapillary Ouvrir Mapillary Améliorez la couverture photo avec Mapillary - Installez Mapillary pour ajouter une ou plusieurs photos à cet emplacement de la carte. + Installez Mapillary pour ajouter des photos à cet emplacement de la carte. Partagez vos photos de rue via Mapillary. Gadget Mapillary Permet de contribuer facilement à Mapillary. @@ -2444,7 +2444,7 @@ Ajouter des fichiers GPX Importer des fichiers GPX ou enregistrer des traces. Ajouter des favoris - Importez des favoris ou ajoutez-en depuis la carte. + Importez des favoris ou créez des favoris sur la carte. Importer le fichier GPX Le fichier %1$s ne contient aucune étape, l\'importer comme trace ? Déplacer le point @@ -2590,7 +2590,7 @@ Afficher les instructions de guidage de votre position vers les marques actives. Afficher une ou deux flèches indiquant la direction vers les marques actives. Indiquez comment afficher la distance avec les marques actives. - Indiquez le nombre d\'indications de direction à afficher : + Définir le nombre d\'indications de direction à afficher. Plus Recherche de fichiers de trace GPX avec points de passage Créer et modifier des éléments OSM From 1875a48bd0affe59249193a140d747e87bff2769 Mon Sep 17 00:00:00 2001 From: Hakuchi Date: Sat, 23 May 2020 21:41:05 +0000 Subject: [PATCH 053/108] Translated using Weblate (German) Currently translated at 99.9% (3338 of 3341 strings) --- OsmAnd/res/values-de/strings.xml | 33 +++++++++++++++++--------------- 1 file changed, 18 insertions(+), 15 deletions(-) diff --git a/OsmAnd/res/values-de/strings.xml b/OsmAnd/res/values-de/strings.xml index 6044f488de..4d394b9771 100644 --- a/OsmAnd/res/values-de/strings.xml +++ b/OsmAnd/res/values-de/strings.xml @@ -465,7 +465,7 @@ mi Standort mitteilen mittels Standort: %1$s -%2$s +\n%2$s Um den Ort zu sehen, folgen Sie dem Weblink %1$s oder dem Android-Intent-Link %2$s Standort senden Standort mitteilen @@ -541,7 +541,7 @@ Aktualisieren Schnellste Route Zur Berechnung der schnellsten Route aktivieren oder für eine kraftstoffsparende Route deaktivieren. - Bei Zoomlevel {0} lade {1} Kacheln\n ({2} MB) + Bei Zoomlevel {0} lade {1} Kacheln ({2} MB) Karte herunterladen Größte zu ladende Vergrößerung Diese Karte konnte nicht geladen werden @@ -1492,8 +1492,8 @@ \nDiese Ansicht kann zurückgestellt werden, indem sie hier wieder deaktiviert wird oder die \'Kartendarstellung\' unter \'Karte konfigurieren\' wie gewünscht geändert wird. Audio Standort: - Lat %1$s - Lon %2$s +\n Lat %1$s +\n Lon %2$s Audio-/Video-Notizen Online-Karte Nur Straßen @@ -1567,7 +1567,7 @@ Veröffentlicht Suchbegriff Lat %1$s -Lon %2$s +\nLon %2$s Abmelden Deaktiviert Höhenbeschränkung @@ -2439,7 +2439,7 @@ Lon %2$s Keine Fotos hier. Fotos von der Straße für jedermann. Plätze entdecken, mitwirken, die Welt im Bild festhalten. Verbessern Sie die Bildberichterstattung mit Mapillary - Installieren Sie die App \'Mapillary\', um dieser Kartenposition ein oder mehrere Fotos hinzuzufügen. + Installieren Sie Mapillary, um Fotos zu dieser Kartenposition hinzuzufügen. Mapillary öffnen Mapillary-Foto Berechtigungen @@ -2554,7 +2554,7 @@ Lon %2$s Passierte ausblenden Auswahl der Entfernungs- und Richtungsangabe für Kartenmarkierungen in der Karte: Kartenausrichtungsgrenzwert - Auswählen, bei welcher Geschwindigkeit die Kartenausrichtung von \'Nach Bewegungsrichtung\' auf \'Nach Kompass\' umschaltet + Auswählen, bei welcher Geschwindigkeit die Kartenausrichtung von \'Nach Bewegungsrichtung\' auf \'Nach Kompass\' umschaltet. Kartenmarkierung in den Verlauf verschoben Notiz konnte nicht geändert werden. Notiz ändern @@ -2612,7 +2612,7 @@ Lon %2$s Nach Datum Nach Typ kann als Favoriten oder GPX-Datei importiert werden. - Audio-, Video- oder Fotonotizen zu jedem Punkt auf der Karte über Bedienelement oder Kontextmenü hinzufügen. + Audio-, Video- oder Fotonotizen zu einem beliebigen Punkt auf der Karte hinzufügen, indem Sie die Widgets oder Kontextmenüs verwenden. Audio-/Video-Notizen nach Datum Ein Tippen auf die Karte schaltet die Steuertasten und Bedienelemente um. • Neu: Unterstützung weltweiter Offline-Reiseführer. Verknüpfung beschriebener Sehenswürdigkeiten zur Landkarte. Die Inhalte basieren derzeit auf Wikivoyage. @@ -2650,7 +2650,7 @@ Lon %2$s Richtungsanzeiger von Ihrem Standort zu aktiven Markierungspunkten einblenden. Ein oder zwei Pfeile anzeigen, die die Richtung zu den aktiven Markierungen angeben. Wählen Sie aus, wie der Abstand zu aktiven Markierungen angezeigt werden soll. - Wählen Sie die Anzahl der Fahrtrichtungsanzeiger: + Wählen Sie die Anzahl der Fahrtrichtungsanzeiger. %1$s bearbeitet, Summe %2$s mBTC OSM-Empfänger Spenden insgesamt @@ -2806,8 +2806,9 @@ Lon %2$s Als Track speichern Sie haben %1$s Punkte hinzugefügt. Geben Sie einen Dateinamen ein und klicken Sie auf „Speichern“. Punkt %1$s gelöscht - Ihre Suchanfrage wird zusammen mit Ihrem Standort gesendet an: „%1$s“. -\nPersönliche Daten werden nicht gesammelt, zur Verbesserung der Suche werden nur die Suchdaten benötigt. + Ihre Suchanfrage wird an: \"%1 s\" gesendet, zusammen mit Ihrem Standort. +\n +\nPersönliche Informationen werden nicht gesammelt, sondern nur Suchdaten, die zur Verbesserung der Suche benötigt werden. Keine Ergebnisse? \nNehmen Sie Kontakt mit uns auf. Suchanfrage senden? @@ -3670,11 +3671,13 @@ Lon %2$s Diese Elemente werden aus dem Menü ausgeblendet, aber die entsprechenden Optionen oder Plugins funktionieren weiterhin. Ordnen Sie Elemente aus %1$s neu an oder blenden Sie sie aus. %1$s / %2$s - Ihr Google Play-Konto wird beim Kauf eines Abonnements belastet, -\nund wenn es abläuft (nach einem Monat, drei Monaten oder einem Jahr) -\nverlängert es sich nicht von selbst, wenn es vorher in Ihren Google Play-Einstellungen gekündigt wurde. + Die Bezahlung wird Ihrem Google Play-Konto bei der Bestätigung des Kaufs belastet. +\n +\n Das Abonnement verlängert sich automatisch, sofern es nicht vor dem Verlängerungsdatum gekündigt wird. Ihr Konto wird für den Verlängerungszeitraum (Monat / drei Monate / Jahr) nur am Verlängerungsdatum belastet. +\n +\n Sie können Ihre Abonnements verwalten und kündigen, indem Sie zu Ihren Google Play-Einstellungen gehen. Suche nach POI-Typen - Kombinieren Sie POI-Typen aus verschiedenen Kategorien. Wenn Sie auf \"Wechseln\" tippen, werden alle ausgewählt, und auf der linken Seite wird die Kategorie ausgewählt. + Kombinieren Sie POI-Typen aus verschiedenen Kategorien. Tippen Sie auf den Schalter, um alle auszuwählen, tippen Sie auf die linke Seite zur Kategorieauswahl. Trenner Schnellaktion Zirkel From 19798fd8ebe61434c2b5198c1735057a49cac84a Mon Sep 17 00:00:00 2001 From: solokot Date: Sun, 24 May 2020 09:47:30 +0000 Subject: [PATCH 054/108] Translated using Weblate (Russian) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-ru/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index f6446df69a..7cef175d12 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -2344,7 +2344,7 @@ Фильтровать фотографии по отправителю, дате или типу. Фильтры применяются только для больших масштабов. Не удалось импортировать файл. Пожалуйста, убедитесь что OsmAnd имеет разрешение на его чтение. Откорректированное расстояние - Установите Mapillary, чтобы добавить одну или несколько фотографий к этому месту на карте. + Установите Mapillary, чтобы добавить фотографии этого места. Высота маршрута Имя файла GPX: Показать на карте после сохранения @@ -2478,7 +2478,7 @@ Отображать направляющие линии от вашего местоположения до активных маркеров. Отображать одну или две стрелки, указывающие направление на активные маркеры. Выберите способ отображения расстояния до активных маркеров. - Выберите количество указателей направления: + Выберите количество указателей направления. Количество десятичных цифр Вставить Следующее поле @@ -2600,9 +2600,9 @@ Путевая точка 1 Точка маршрута 1 Добавить файлы GPX - Импорт файлов GPX, или запись треков. + Импорт файлов GPX или запись треков. Добавить избранные - Импортируйте избранное, или добавляйте, отмечая точки на карте. + Избранное можно импортировать или создать, отмечая точки на карте. Импортировать файл GPX Переместить точку Добавить в файл GPX @@ -3674,7 +3674,7 @@ \nПодписка продлевается автоматически, если вы не отмените её до даты продления. С вашего счёта будет взиматься плата за период продления (месяц/три месяца/год) разово в день продления. \n \nВы можете управлять подписками и отменять их в настройках Google Play. - Можно объединить типы POI из разных категорий. Нажмите «Переключить», чтобы выбрать все; нажмите слева, чтобы выбрать категорию. + Можно объединить типы POI из разных категорий. Нажмите переключатель, чтобы выбрать все; нажмите слева, чтобы выбрать категорию. Поиск типов POI OsmAnd и Mapillary Путешествие (Викигид и Википедия) From 77584874e98791c2af17b108e169e3f7f64faba4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Sun, 24 May 2020 05:33:46 +0000 Subject: [PATCH 055/108] Translated using Weblate (Turkish) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-tr/strings.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 3ea95e3bfc..90aaa300ec 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -2109,7 +2109,7 @@ İçerik menüsünü açmadan, harita üzerinde bir belirtecin üzerine bas ve aktif belirteçlerin üzerine sürükle. \'Tek basış\' aktif Not alın! - Widget veya içerik menüsünü kullanarak, harita üzerinde her nokta için ses, video veya fotoğraf notları al. + Widget veya içerik menülerini kullanarak, haritadaki herhangi bir nokta için ses, video veya fotoğraf notları ekleyin. Tarihe göre sesli/görüntülü notlar Tarihe göre Türe göre @@ -2123,7 +2123,7 @@ Grupları al İki Bir - Yön göstergelerinin sayısını belirtin: + Yön göstergelerinin sayısını belirtin. Ondalık hane sayısı Sağ Sol @@ -2183,7 +2183,7 @@ İzinler Dosya içe aktarılamadı. Lütfen OsmAnd\'ın okuma iznine sahip olduğundan emin olun. Mapillary ile fotoğraf kapsama alanını geliştir - Bu harita konumuna bir ya da daha fazla fotoğraf eklemek için Mapillary yükleyin. + Bu harita konumuna fotoğraf eklemek için Mapillary yükleyin. Çevrim-içi fotoğraflar Fotoğraf ekle Burada fotoğraf yok. @@ -3631,7 +3631,7 @@ \n \n Google Play ayarlarınıza giderek aboneliklerinizi yönetebilir ve iptal edebilirsiniz. POI türleri ara - Farklı kategorilerdeki POI türlerini birleştirin. \"Değiştir\" düğmesine dokunmak hepsini, sol taraf kategoriyi seçer. + Farklı kategorilerdeki POI türlerini birleştirin. Tümünü seçmek için düğmeye, kategori seçimi için sol tarafa dokunun. Yarıçap cetveli OsmAnd izleyici OsmAnd + Mapillary @@ -3679,4 +3679,5 @@ Uygulama profilini değiştir Böyle bir profil bulunamadı. Dünya genel bakış haritası (ayrıntılı) + Desteklenmeyen tür \ No newline at end of file From 3e9c1c5594e11ad8f11257851ed9a2f88af9be74 Mon Sep 17 00:00:00 2001 From: Tymofij Lytvynenko Date: Sun, 24 May 2020 06:19:45 +0000 Subject: [PATCH 056/108] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-uk/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 150624447c..5bda3f8313 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -2435,7 +2435,7 @@ Відкрити Mapillary Встановити Поліпшити фотопокриття Mapillary - Встановіть Mapillary, щоб додати одну або кілька світлин до цього місця на мапі. + Встановіть Mapillary, щоб додати світлини до цього місця на мапі. Зображення Mapillary Відстань виправлена Права доступу @@ -2597,7 +2597,7 @@ Відображати напрямні смуги від Вашого місця розташування до задіяних позначок. Відображати одну або дві стрілки, що вказують напрямок на задіяні позначки. Виберіть спосіб відображення відстані до задіяних позначок. - Виберіть, скільки відображати показників напрямку: + Виберіть, скільки відображати показників напрямку. Направо Наліво Пошук треків з шляховими точками From 3c32216cbef2925391d95f937e01e3ef8f1ba8db Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sun, 24 May 2020 20:01:15 +0000 Subject: [PATCH 057/108] Translated using Weblate (Slovak) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-sk/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index 67fbeb98f6..e364222459 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -2492,7 +2492,7 @@ Pridať súbory GPX Importovať súbory GPX alebo zaznamenať stopy. Pridať obľúbené - Importovať Obľúbené body alebo pridať označením bodov na mape. + Importovať Obľúbené body alebo pridať ich označením bodov na mape. Importovať súbor GPX Súbor %1$s neobsahuje body trasy, naimportovať ako stopu? Presunúť bod @@ -2593,7 +2593,7 @@ Zobraziť smerové čiary z vašej polohy k polohám aktívnych značiek. Zobraziť jednu alebo dve šípky smerujúce k aktívnym značkám. Zvoliť ako chcete zobraziť vzdialenosť k aktívnym značkám. - Zadajte počet smerových šípok: + Zadajte počet smerových šípok. Viac Hľadajú sa stopy s waypointami Vytvoriť alebo upraviť objekty OSM @@ -2604,7 +2604,7 @@ Značka %s aktivovaná. Potlačte značku na mape na jej presunutie na prvé miesto v aktívnych značkách bez otvárania kontextového menu. Urobte poznámky! - Pridajte zvukové, video alebo fotografické poznámky ku každému bodu na mape, pomocou nástroja alebo kontextového menu. + Pridajte zvukové, video alebo fotografické poznámky k ľubovoľnému bodu na mape, pomocou nástroja alebo kontextového menu. Mediálne poznámky podľa dátumu Podľa dátumu Podľa typu @@ -3675,7 +3675,7 @@ \n \n Vaše predplatné môžete spravovať a zrušiť v nastaveniach Google Play. Hľadať typy bodov záujmu - Skombinovať typy bodov záujmov z rôznych kategórií. Stlačenie \"Prepnúť\" vyberie všetky, stlačenie ľavej strany vyberie kategóriu. + Skombinovať typy bodov záujmov z rôznych kategórií. Stlačte prepínač pre vybratie všetkých, stlačte ľavú stranu pre vybratie kategórie. Stopovanie OsmAnd OsmAnd + Mapillary Rýchla akcia From 1b3b2a1ee1408368a487fcbe5635df6853db30a9 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Sun, 24 May 2020 10:39:28 +0000 Subject: [PATCH 058/108] Translated using Weblate (Hebrew) Currently translated at 99.9% (3339 of 3341 strings) --- OsmAnd/res/values-he/strings.xml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index dc3a91f654..f2a46b2596 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -1119,7 +1119,7 @@ פתיחת Mapillary התקנה שיפור כיסוי התמונות עם Mapillary - ניתן להתקין את Mapillary כדי להוסיף תמונה אחת או יותר למיקום הזה במפה. + ניתן להתקין את Mapillary כדי להוסיף תמונות למיקום הזה במפה. תמונות מקוונות הוספת תמונות אין כאן תמונות. @@ -1327,7 +1327,7 @@ הצגת קווי כיוון מהמיקום שלך למיקומי הסמנים הפעילים. הצגת חץ או שניים המציינים את כיוון הסמנים הפעילים. ניתן לבחור כיצד להציג את המרחק עד לסמנים הפעילים. - ציון כמות מחווני כיוון: + ציון כמות מחווני כיוון. כמות הספרות העשרוניות ימין שמאל @@ -1712,7 +1712,7 @@ הוספת קובצי GPX ייבוא קובצי GPX או הקלטת מסלולים. הוספת מועדפים - ייבוא מועדפים או הוספה על ידי סימון נקודות במפה. + ייבוא מועדפים או הוספתם על ידי סימון נקודות במפה. ייבוא קובץ GPX הקובץ %1$s אינו מכיל נקודות דרך, לייבא אותו כמסלול? הזזת נקודה @@ -2004,7 +2004,7 @@ נוספה הסמן %s הופעל. אפשר ליצור הערות! - ניתן להוסיף הערה מסוג שמע, וידאו או תמונה לכל נקודה במפה באמצעות וידג׳ט או תפריט הקשר. + ניתן להוסיף הערה מסוג שמע, וידאו או תמונה לכל נקודה במפה באמצעות הווידג׳טים או תפריטי ההקשר. הערות שמע/וידאו לפי תאריך לפי תאריך לפי סוג @@ -3730,4 +3730,5 @@ החלפת פרופיל יישומון לא ניתן למצוא פרופילים שכאלו. מפת סקירת העולם (מפורטת) + סוג לא נתמך \ No newline at end of file From 53ab25d032393f492a42fd0b6b4074f32c79d0a8 Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 24 May 2020 11:16:07 +0000 Subject: [PATCH 059/108] Translated using Weblate (Polish) Currently translated at 99.2% (3316 of 3341 strings) --- OsmAnd/res/values-pl/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-pl/strings.xml b/OsmAnd/res/values-pl/strings.xml index 489c16a393..3913056526 100644 --- a/OsmAnd/res/values-pl/strings.xml +++ b/OsmAnd/res/values-pl/strings.xml @@ -2347,7 +2347,7 @@ Reprezentuje obszar: %1$s x %2$s Poprawiona odległość Uprawnienia Nie można zaimportować pliku. Proszę sprawdzić czy program posiada uprawnienia do jego odczytywania. - Linijka promieniowa + Cyrkiel Załaduj ponownie Nazwa użytkownika Data @@ -3683,7 +3683,7 @@ Reprezentuje obszar: %1$s x %2$s Profile nawigacji OsmAnd + Mapillary Szybka czynność - Pomiar kąta + Cyrkiel Mierzenie odległości Podróże (Wikipodróże i Wikipedia) Znaczniki From ce974c312cb25042f7cf65a22c4b4a11bb5c08bc Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Sun, 24 May 2020 10:02:41 +0000 Subject: [PATCH 060/108] Translated using Weblate (Arabic) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-ar/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index 06d8831200..bfd3848ef5 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -725,9 +725,9 @@ عكس المسار استخدم الوجهة الحالية يمر على طول المسار باكمله - "خريطة التنقل المتوفرة حاليا لهذا الموقع. -\n -\nلتفعليها \'القائمة\' → \'تكوين الخريطة\' → \'مصدر الخريطة ...\' → \'خرائط متجهة بدون اتصال\'." + خريطة التنقل المتوفرة حاليا لهذا الموقع. +\n +\nلتفعليها \'القائمة\' → \'تكوين الخريطة\' → \'مصدر الخريطة ...\' → \'خرائط متجهة بدون اتصال\'. مصدر التوجيه الصوتي اختيار قناة لتشغيل التوجيه الصوتي. صوت المكالمة الهاتفية ( كما يحاول قطع ستريو بلوتوث السيارة ) @@ -2870,7 +2870,7 @@ خط مباشر من موقعك إلى العلامة النشطة. عرض سهم واحد أو اثنين ليشير إلى اتجاه العلامة النشطة. طريقة عرض المسافة من موقعي إلى العلامات النشطة. - عدد الأسهم تجاه العلامات النشطة ( للملاحة في الصحراء): + عدد الأسهم تجاه العلامات النشطة ( للملاحة في الصحراء). أسود ملفات GPX تشغيل @@ -3282,8 +3282,8 @@ عرض الإحداثيات سياسة الخصوصية ساعدنا في جعل أوسماند أفضل - السماح لـ OsmAnd بجمع ومعالجة بيانات استخدام التطبيق المجهول. لا يتم جمع بيانات حول موقعك أو المواقع التي تعرضها على الخريطة. -\n + السماح ل OsmAnd بجمع ومعالجة بيانات استخدام التطبيق المجهول. لا يتم جمع بيانات حول موقعك أو المواقع التي تعرضها على الخريطة. +\n \nقم بإعدادها في أي وقت لاحق في \'الإعدادات\' → \'الخصوصية والأمان\'. اختر نوع البيانات التي تريد مشاركتها: الخرائط التي تم تنزيلها From 4981a63ed4e2198248e09f6670b7f70725d8183b Mon Sep 17 00:00:00 2001 From: iman Date: Sun, 24 May 2020 04:24:40 +0000 Subject: [PATCH 061/108] Translated using Weblate (Persian) Currently translated at 99.7% (3332 of 3341 strings) --- OsmAnd/res/values-fa/strings.xml | 38 +++++++++++++++++--------------- 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/OsmAnd/res/values-fa/strings.xml b/OsmAnd/res/values-fa/strings.xml index d189deae1e..b9f2f752bb 100644 --- a/OsmAnd/res/values-fa/strings.xml +++ b/OsmAnd/res/values-fa/strings.xml @@ -29,7 +29,7 @@ نصب نسخه ظاهر برنامه را به‌دلخواه تنظیم کنید. پوستهٔ برنامه - تنظیمات دسترسی آسان + تنظیمات قابلیت دسترسی مشخص‌کردن نشانی انتخاب نقطهٔ موردعلاقه تغییرات OsmAnd @@ -423,7 +423,7 @@ راهنما روشن خاموش - طبق تنظیمات کلی دستگاه + طبق تنظیمات دستگاه برگشتن به منو ریزتر درشت‌تر @@ -985,13 +985,13 @@ با ایجاد یا اصلاح نقاط توجه (POI)، ایجاد یادداشت‌های OSM یا نظردادن روی آن‌ها و بارگذاری فایل‌های GPXای که ضبط کرده‌اید در تکمیل نقشهٔ OSM مشارکت کنید. برای این منظور لازم است نام کاربری و گذرواژهٔ خود را در OsmAnd وارد کنید. OpenStreetMap.org یک پروژهٔ نقشه‌کشی جامعه‌محور، جهانی و در مالکیت عمومی است. گفتاری را انتخاب کنید و با پخش پیام‌ها، آن را امتحان کنید: رندر بومی - حالت دسترسی آسان + حالت قابلیت دسترسی امکانات موردنیاز برای کاربران مبتلا به نارسایی جسمی را فعال می‌کند. جهت‌ها (۸سویه) میزان بزرگ‌نمایی نقشه را با حرکت افقی گوی مکان‌نما تغییر دهید. استفاده از گوی مکان‌نما برای کنترل بزرگ‌نمایی - تنظیمات مربوط به دسترسی آسان. - دسترسی آسان + تنظیمات مربوط به قابلیت دسترسی. + قابلیت دسترسی نشانی اینترنتی را با این پارامترها تعریف کنید: \nlat={0}, lon={1}, timestamp={2}, hdop={3}, altitude={4}, speed={5}, bearing={6} نشانی اینترنتی ردیابی آنلاین @@ -1638,7 +1638,7 @@ مقیاس پیاده‌گردی آلپاین (SAC) بازکردن در بستن در - هزینهٔ اشتراک ماهانه است. هر زمان که خواستید، اشتراک خود را در گوگل‌پلی لغو کنید. + هزینهٔ اشتراک مطابق دورهٔ انتخابی است. هر زمان که خواستید، اشتراک خود را در گوگل‌پلی لغو کنید. کمک مالی به جامعهٔ OSM بخشی از کمک‌های مالی به مشارکت‌کنندگان OSM داده می‌شود. هزینهٔ اشتراک تغییری نمی‌کند. این اشتراک، به‌روزرسانی‌های ساعتی، روزانه و هفتگی و نیز امکان دانلود نامحدود همهٔ نقشه‌ها را فعال می‌کند. @@ -2240,7 +2240,7 @@ تلاش مجدد افزودن خط افزودن نقاط موردعلاقه - نقاط موردعلاقه را درون‌برد کنید یا آن‌ها را روی نقشه علامت بزنید. + علاقه‌مندی‌ها را درون‌برد کنید یا با علامت‌گذاری روی نقشه آن‌ها را اضافه کنید. جابه‌جاکردن نقطه یک کپی از مبدأ را به‌عنوان مقصد بیفزا. ایجاد سفر رفت‌وبرگشتی @@ -2298,7 +2298,7 @@ بازکردن مپیلاری نصب با مَپیلاری پوشش تصویری را بهتر کنید - برنامهٔ Mapillary را نصب کنید و یک یا چند عکس به این نقطه از نقشه اضافه کنید. + برنامهٔ Mapillary را نصب کنید و به این موقعیت در نقشه چند عکس اضافه کنید. تصاویر آنلاین افزودن تصویر اینجا عکسی ندارد. @@ -2614,7 +2614,7 @@ خطوط جهت‌داری را از موقعیت شما به‌سمت نشانه‌های فعال نمایش می‌دهد. با یک یا دو پیکان، سمت قرارگیری نشانه‌های فعال روی نقشه را نمایش می‌دهد. مشخص کنید مسافت شما تا نشانه‌های فعال کجا نشان داده شود. - تعداد جهت‌نماها را مشخص کنید: + تعداد جهت‌نماها را مشخص کنید. تنظیمات ظاهری ردّی را انتخاب کنید تا نقاط بین‌راهیِ آن را به نشانه‌ها اضافه کنید. دسته‌ای از نقاط موردعلاقه را انتخاب کنید تا به نشانه‌ها اضافه شود. @@ -2639,7 +2639,7 @@ فعال‌سازی «با یک لمس» یادداشت بگذارید! با استفاده از ابزارک یا منوی زمینه، برای هر نقطه‌ای روی نقشه یادداشت صوتی، عکسی یا ویدئویی بگذارید. - یادداشت‌های OSM بر اساس تاریخ + یادداشت‌های صوتی/تصویری بر اساس تاریخ بر اساس تاریخ بر اساس نوع جست‌وجوی خود را تغییر دهید. @@ -3449,7 +3449,7 @@ نماد، رنگ و نام ویرایش لیست پروفایل پروفایل انتخاب‌شده - با زدن روی %1$s، همهٔ تغییرات شما از بین می‌رود. + زدن روی %1$s، همهٔ تغییراتتان را از بین می‌برد. همهٔ تنظیمات پروفایل به حالت اولیهٔ پس از نصب بازنشانی می‌شود. همهٔ تنظیمات پروفایل را بازنشانی می‌کنید؟ %1$s: ‪%2$s‬ @@ -3518,7 +3518,7 @@ %1$s‏/%2$s غروب خورشید در %1$s طلوع خورشید در %1$s - حالت دسترسی آسان در دستگاه شما غیرفعال است. + حالت قابلیت دسترسی در دستگاهتان خاموش شده است. استفاده از زمان خاموشی صفحهٔ دستگاه پیشفرض غیرفعال است، اگر OsmAnd در پیش‌زمینه اجرا باشد صفحه خاموش نمی‌شود. \n @@ -3555,7 +3555,7 @@ قابل‌استفاده لطفاً یک نام برای پروفایل بنویسید بازکردن تنظیمات - افزونه غیرفعال شد + افزونه خاموش این افزونه یک برنامهٔ جداگانه است. اگر دیگر لازمش نداشتید باید جداگانه آن را حذف کنید. \n \nبا حذف OsmAnd، این افزونه روی دستگاه باقی می‌ماند. @@ -3563,12 +3563,12 @@ %1$s — %2$s — %3$s مسیریابی شامل دادهٔ افزوده - پروفایلِ درون‌بردی حاوی دادهٔ افزوده است. «درون‌برد» را بزنید تا فقط دادهٔ پروفایل درون‌برد شود. «دادهٔ افزوده» را انتخاب کنید تا آن را نیز درون‌برد کنید. + پروفایلِ درون‌بردی حاوی دادهٔ افزوده است. «درون‌برد» را بزنید تا فقط دادهٔ پروفایل درون‌برد شود، یا «دادهٔ افزوده» را انتخاب کنید تا آن را نیز درون‌برد کنید. می‌توانید همراه پروفایل، دادهٔ افزوده را نیز برون‌برد کنید. جنوبگان اعلام پیشفرض برنامه (%s) - غیرفعال‌سازی محاسبهٔ مجدد + بدون محاسبهٔ مجدد مسافت کمینی برای مسیریابی مجدد اگر مسافت تا مسیر بیش از پارامتر تعیین‌شده باشد، مسیر دوباره محاسبه می‌شود پروفایل سفارشی @@ -3650,9 +3650,9 @@ زبان‌ها زبان همهٔ زبان‌ها - تعداد اقلام کشو را به‌دلخواه تنظیم کنید، نقشه و منوی زمینه را پیکربندی نمایید. + تعداد اقلام «کشو»، «پیکربندی نقشه» و «منوی زمینه» را به‌دلخواه تنظیم کنید. \n -\nمی‌توانید افزونهٔ بی‌استفاده را غیرفعال کنید تا همهٔ کنترل‌های آن از برنامه پنهان شود. +\nافزونه‌های بی‌استفاده را غیرفعال کنید تا همهٔ کنترل‌های آن‌ها از برنامه پنهان شود. پنهان‌سازی تنظیمات آن‌ها را به حالت اولیه بازنشانی می‌کند. این اقلام از منو پنهان می‌شوند، اما گزینه‌ها یا افزونه‌های متناظر همچنان کار می‌کنند. پنهان @@ -3662,7 +3662,7 @@ اقلام کشو، منوی زمینه سفارشی‌سازی واسط کاربری کنش‌های منوی زمینه - کنش‌های اصلی فقط ۴ دکمه است. + فقط چهار دکمه دارد. کنش‌های اصلی افزونهٔ توسعه‌دهنده چیزهایی که از این نقطه به پایین قرار می‌گیرند، با جداکننده جدا می‌شوند. @@ -3750,4 +3750,6 @@ تغییر پروفایل برنامه چنین پروفایلی پیدا نشد. نقشهٔ نمای کلی جهان ( با جزئیات) + ازسرگیری + نوع پشتیبانی‌نشده \ No newline at end of file From 2ec4c5f8b8e0bd5dd6b1198e2c6feba7f6d1e669 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Sun, 24 May 2020 05:07:22 +0000 Subject: [PATCH 062/108] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 9.0% (302 of 3341 strings) --- OsmAnd/res/values-nb/strings.xml | 27 +++++++++++++++++++++++++-- 1 file changed, 25 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 6f180742de..627aa15501 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -2354,7 +2354,7 @@ Vis retningsbestemte linjer fra din posisjon til de aktive markørplasseringene. Vis én eller to piler som indikerer retningen til de aktive markørene. Velg hvordan avstanden til aktive markører skal vises. - Velg antall retningsindikatorer: + Velg antall retningsindikatorer. Et trykk på kartet skjuler/viser kontrollknappene og miniprogrammene. Marker som passert Kunne ikke endre notatet. @@ -3285,7 +3285,7 @@ \n \n • Ny kartnedlasting-dialog foreslår et kart til nedlasting mens man utforsker \n -\n • Nattdraktfikser +\n • Fikser for mørke drakter \n \n • Flere rutingsproblemer rundt om i verden fikset \n @@ -3624,4 +3624,27 @@ Skigåing Ustøttet type Velg hvor mye avviksdistanse som skal utløse omruting. + Du kan velge ytterligere data å eksportere sammen med profilen. + Importer profil inneholder ytterligere data. Klikk «Import» for å importere kun profildata, eller velg ytterligere data. + Alle programtilleggsinnstillinger tilbakestilt til opprinnelse. + Du kan legge til en ny egendefinert kategori ved å velge én eller flere nødvendige kategorier. + Endre listens sorteringsrekkefølge, skjul unødvendige kategorier. Du kan importere eller eksportere alle endringer med profiler. + Endre kategoriforordning + Ruten vil bli kalkulert igjen hvis distansen til ruten er lengre enn angitt parameter + Dette programtillegget er et eget program, du vil måtte fjerne det for seg hvis du ikke lenger vil bruke det. +\n +\nDette programtillegget vil forbli på enheten etter fjerning av OsmAnd. + Importerte elementer vil bli lagt til med fortegnelse + Tilpass mengden elementer i \"Skuff\", \"Sett opp kart\", og \"Bindeleddsmeny\". +\n +\nSkru av ubrukte programtillegg for å skjule alle deres styringskontroller. %1$s. + Disse elementene er skjult fra menyen, men de representerte valgene eller programtilleggene vil fortsette å virke. + Velg språkene Wikipedia-artikler skal vises på i kartet. Du kan bytte mellom alle tilgjengelige språk mens du leser artikkelen. + Veiledning til kartets merking. + Ruteplanlegging + Minste avvik for anvisning av ny rute. + OsmAnd har allerede elementer med samme navn som de i importen. +\n +\nVelg en handling. + Kombiner interessepunkttyper fra forskjellige kategorier. Trykk for å velge alle, og venstre side for kategorivalg. \ No newline at end of file From 06e4761ae2a3ec86622c802019e370a7949d0d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Sat, 23 May 2020 23:54:27 +0000 Subject: [PATCH 063/108] Translated using Weblate (Galician) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-gl/strings.xml | 46 +++++++++++++++++--------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index fa9509ea7b..fef81238d4 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -1931,7 +1931,7 @@ Lon %2$s Eliminar o filtro Filtro novo Insire o nome do novo filtro, que se engadirá na túa lapela das \"Categorías\". - Cobraráseche unha subscrición mensual. Podes desbotar a túa subscrición na Google Play en calquera intre. + Cobraráseche unha subscrición polo período escollido. Podes desbotar a túa subscrición na Google Play en calquera intre. Doazón á comunidade do OSM Parte da túa doazón envíase ós contribuíntes do OSM. O custo da subscrición segue sendo a mesma. A subscrición permite actualizacións a cada hora, día ou semana e descargas ilimitadas de xeito global para todo os mapas. @@ -2222,7 +2222,7 @@ Lon %2$s Instalar Mellorar a cobertura das imaxes co Mapillary Abrir Mapillary - Instala o Mapillary para engadir unha ou máis imaxes a esta localización do mapa. + Instala o Mapillary para engadir imaxes a esta localización do mapa. Imaxes da rede Deter/Voltar á navegación Un botón para deter ou voltar á navegación. @@ -2337,7 +2337,7 @@ Lon %2$s No mapa aparece unha liña que conecta a túa posición até as localizacións das marcaxes activas. No mapa amósanse unha ou dúas frechas que indican a dirección ás marcaxes activas. Escolle de que xeito che gostaría ollar a distancia ás marcaxes activas. - Especifica o número de indicadores de dirección: + Especifica o número de indicadores de dirección. Número de díxitos decimais Dereita Esquerda @@ -2412,7 +2412,7 @@ Lon %2$s Accións Marcaxe Crear ou modificar obxectos de OSM - Crear ou modificar PDI do OSM, abrir ou comentar Notas do OSM e contribuír con ficheiros GPX gravados. + Crear ou modificar PDI do OSM, abrir ou comentar notas no OSM e contribuír con ficheiros GPX gravados. Eliminado Editado Engadido @@ -2420,7 +2420,7 @@ Lon %2$s Preme nunha marcaxe do mapa para movela cara a parte de enriba das marcaxes activas sen abrir o menú contextual. Activar cun toque Crea notas! - Engada unha nota de son, vídeo ou imaxe a cada punto do mapa empregando o trebello ou o menú de contexto. + Engadir notas de son, vídeo ou imaxe a calquera punto do mapa empregando os trebellos ou os menús contextuais. Notas A/V por data Por data Por tipo @@ -3443,7 +3443,7 @@ Lon %2$s Icona, cor e nome Editar a listaxe de perfís Perfil seleccionado - Ó premer en %1$s, serán desbotadas todas as túas modificacións. + Ó premer en %1$s desbotas todas as túas modificacións. Restabelecer todos os axustes do perfil ós valores por defecto da instalación. Restabelecer todos os axustes do perfil\? %1$s %2$s @@ -3512,7 +3512,7 @@ Lon %2$s %1$s/%2$s Solpor ás %1$s Amencer ás %1$s - Modo de accesibilidade desactivado no teu sistema. + Modo de accesibilidade desactivado no teu Android. Empregar o tempo de espera da pantalla do sistema Desactivado de xeito predefinido, se o OsmAnd é executado en primeiro plano, a pantalla manterase acendida. \n @@ -3556,13 +3556,13 @@ Lon %2$s %1$s — %2$s — %3$s Enrutamento Incluír datos adicionais - O perfil importado contén datos adicionais. Preme en \"Importar\" para importar só datos de perfil ou marca datos adicionais para importar. + O perfil importado contén datos adicionais. Preme en \"Importar\" para importar só datos de perfil ou marca datos adicionais. Podes marcar datos adicionais para exportar ó carón do perfil. Antártida Amosar notificación do sistema durante a navegación con instrucións de navegación. Notificación de navegación Aplicación por defecto (%s) - Desactivar recálculo + Sen recálculo Distancia mínima para recalcular a ruta A ruta será recalculada se a distancia á ruta é maior que o parámetro especificado Perfil personalizado @@ -3606,7 +3606,7 @@ Lon %2$s Lingua Todas as linguas Precísanse mapas adicionais para ollar os PDI da Wikipedia no mapa. - As \"Accións principais\" conteñen só 4 botóns. + Só ten catro botóns. Accións principais Só podes mover obxectos dentro desta categoría. Escolle as linguas nas que os artigos da Wikipedia aparecerán no mapa. Podes trocar entre todos as linguas dispoñíbeis en canto leas o artigo. @@ -3666,7 +3666,7 @@ Lon %2$s A ruta será recalculada se a distancia á localización actual é maior que o valor escollido. %1$s de %2$s Pendentes - Amosar/agochar terreo + Amosar / agochar terreo Agochar terreo Amosar terreo Un botón que amosa ou agocha a capa do terreo no mapa. @@ -3678,9 +3678,9 @@ Lon %2$s Octógono Cadrado Mín - Personaliza a morea de elementos na gabeta, na configuración do mapa e o menú contextual. + Personaliza a cantidade de elementos na \"Gabeta\", na \"Configuración do mapa\" e no \"Menú contextual\". \n -\nPodes desactivar os plugins non enpregados, para agochar todos os seus controis da aplicación %1$s. +\nDesactiva os plugins non enpregados, para agochar todos os seus controis da aplicación %1$s. Elementos da gabeta, menú contextual Personalización da interface de usuario Gabeta @@ -3698,7 +3698,7 @@ Lon %2$s \n \n  Podes xestionar e desbotar as túas subscricións entrando nos axustes da Google Play." Procurar tipos de PDI - Combina tipos de PDI de diferentes categorías. Preme en \"Trocar\" para marcar todo, preme o lado esquerdo para escoller unha categoría. + Combina tipos de PDI de diferentes categorías. Preme en \"trocar\" para marcar todo, preme o lado esquerdo para escoller unha categoría. Acción %1$s non admitida Rastrexador do OsmAnd OsmAnd + Mapillary @@ -3710,17 +3710,17 @@ Lon %2$s Favoritos Subscrición - OsmAnd Live Compras do OsmAnd - A guía para a simboloxía dun mapa + A guía para a simboloxía dun mapa. Perfís de navegación • Novos mapas sen conexión das pendentes \n \n • Personalización máis completa dos favoritos e puntos de referencia GPX (cores personalizadas, iconas, formas) \n -\n • Nova personalización na orde dos elementos en Configurar mapa, menú contextual e menú lateral +\n • Nova personalización na orde dos elementos en \"Configurar mapa\", \"menú contextual\" e \"gabeta\" \n \n • A Wikipedia agora visualízase coma una capa separada en Configurar mapa, escolle só as linguas precisas \n -\n • Crea o teu propio filtro/mapas de puntos de interese, con total flexibilidade +\n • Crea o teu propio filtro / mapas de puntos de interese, con total flexibilidade \n \n • Engadíronse opcións para restabelecer os axustes dos perfís personalizados \n @@ -3735,15 +3735,17 @@ Lon %2$s Podes acceder a estas accións premendo no botón “%1$s”. Agochar transporte público Amosar transporte público - Amosar/agochar transporte público - Un botón que amosa ou agocha o transporte público no mapa. - Crear/Editar PDI + Amosar / agochar transporte público + Botón que amosa ou agocha o transporte público no mapa. + Crear / Editar PDI Posicións de aparcamento Engadir / Editar favorito Restabelecer a orde dos elementos predefinidos Voltar á edición - Premendo no botón de acción mudarase entre os perfís escollidos. + O botón de acción troca entre os perfís escollidos. Engadir perfil Mudar perfil da aplicación - Non se atoparon os perfís marcados para esta acción. + Non foi posíbel atopar ningún destes perfís. + Mapa xeral do mundo (detallado) + Tipo non admitido \ No newline at end of file From faf5d24928e3a307a26e6b45216dc5a2ee007ff2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Sat, 23 May 2020 23:54:04 +0000 Subject: [PATCH 064/108] Translated using Weblate (Galician) Currently translated at 100.0% (3804 of 3804 strings) --- OsmAnd/res/values-gl/phrases.xml | 1 + 1 file changed, 1 insertion(+) diff --git a/OsmAnd/res/values-gl/phrases.xml b/OsmAnd/res/values-gl/phrases.xml index 1c18955685..0ba169567c 100644 --- a/OsmAnd/res/values-gl/phrases.xml +++ b/OsmAnd/res/values-gl/phrases.xml @@ -3816,4 +3816,5 @@ Augas subterráneas Tubaxe Presión + Estado da bomba: sen chave \ No newline at end of file From 6f0ffb7680e6dab358245d70ca9af2b144dd4b78 Mon Sep 17 00:00:00 2001 From: Benjamin Goodger Date: Sat, 23 May 2020 22:25:48 +0000 Subject: [PATCH 065/108] Translated using Weblate (Dutch) Currently translated at 86.0% (3275 of 3804 strings) --- OsmAnd/res/values-nl/phrases.xml | 158 ++++++++++++++++++++++++++++++- 1 file changed, 154 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-nl/phrases.xml b/OsmAnd/res/values-nl/phrases.xml index b690022e15..8f2054e94b 100644 --- a/OsmAnd/res/values-nl/phrases.xml +++ b/OsmAnd/res/values-nl/phrases.xml @@ -1274,7 +1274,7 @@ Sneeuwmobiel Skating Geen - Buckels + Mogul Tuin bij woonhuis Gemeenschappelijke tuin Privé-tuin @@ -1594,13 +1594,13 @@ Reparatie van elektrische voertuigen Motorfiets-reparatie Ja - Geen zelfbediening + Nee Ja Geen automaat Full-service Ja Borstelloos: nee - Auto wassen: nee + Nee Man Verboden voor mannen Vrouw @@ -2372,7 +2372,7 @@ Buschenschank Grill Bagel - Diner + Eethuis Worst Taart Pannenkoeken @@ -3138,4 +3138,154 @@ Militair/openbaar Privaat Balkan + Ondersteuning: hangend + Boven + Onderwater + Metaalrooster + Kunstgras + Berggebied + Couloir + VHF-kanaal + Transportkantoor + Sociale voorzieningen + Overheidsdienst + Rijksarchief + Geen kano’s + Geen kajaks + Geen bijboten + Geen zeilboten + Geen jetskis + Geen waterfietsen + Geen woonboten + Geen motorboten + Bootverhuur + Reservering niet mogelijk + Reservering aangeraden + Geen winterkamer + Richting: uit + Ruimtehaven + Vrijlaten: ja + Adoptie: ja + Standaard + Offroadmotor + Sportmotor + Geen motorkleren + Geen banden + Geen onderdelen + Geen reparatie + Geen verhuur + Verkoop tweedehands + Verkoop: nee + Tribunes + Volière + Verblijf + Dierentuin + Taalschool + Kinderkamp + Telefonisch reparatiebedrijf + Wijn geserveerd + Bouw: verborgen + Bouw: raster + Soort + Fijn voedsel + Website + Emmer + Mosselkwekerij + Geen datumweergave + Soort: paddock + Paarden houden + Dierenhouden + Voedingsmiddelenwinkel + Verlichting + Dierenvoederplaats + Soort: plank + Soort: telefooncel + Openingstijden op kerstdagen + Kerstwinkel + Watertank + Consulaat + Reizigersinformatiedisplay: nee + Ondersteuning: sokkel + Analoge wijzerplaat + Toestelreparatiezaak + Kantoor van energieleverancier + Wijnwinkel + Spoorwegemplacement + Bouw: koepel + Bouw: vrijstandig + Soort: open stal + Schapen houden + Fotoatelier + E-sigarettenwinkel + Pachinko + Goklocatie + Slotenmaker + Feestwinkel + Sagardotegi + Soort: metaalkast + Soort: leesvak + Openbare boekenkast + Kerstmis: locatie + Kerstmis: opmerking + Kerstboomwinkel + Kerstpiramide + Puttenlatrine + Hoge Commissaris + Ereconsulaat + Alleen + Garnalenkwekerij + Ondersteuning: toren + Ondersteuning: billboard + Wandmontage + Zonnewijzer + Kerstevenement + Chemisch toilet + Spoeltoilet + Brandweerkazerne + Ambassadeurswoning + Permanente missie + Consulaat-generaal + Verkeersspiegel + Hoofdverdelingskader (MDF) + Aquacultuur: vis + Aquacultuur + Reizigersinformatiedisplay: ja + Ondersteuning: dak + Ondersteuning: plafond + Ondersteuning: terrein + Ondersteuning: boom + Ondersteuning: paal + Datumaanduiding + Digitaal beeldscherm + Beeldscherm: ja + Vertoning: nee + Pompstation + Uitvoer: biogas + Uitvoervermogen (biogas) + Uitvoer: vacuüm + Uitvoer: perslucht + Uitvoervermogen (perslucht) + Uitvoervermogen (warme water) + Uitvoer: koud water + Uitvoer: warme lucht + Uitvoer: stoom + Uitvoer: warme water + Uitvoer (stroom): nee + Uitvoer: stroom + Uitgangsvermogen + Kaslandbouw + Zwaartekracht + Troika-kaarten niet geaccepteerd + Troika-kaarten + Pompstatus: gesloten + Pompstatus: defecte + Pompstatus: ok + Pompstijl: historische + Pompsoort: India Mk II of III + Pompsoort: balkenmotor + Vrij-vliegen star: nee + Star + Druk + Pompstijl: moderne + Pompsoort: zwaartekracht \ No newline at end of file From c96cdf93c7843ea9fe9b0ab149623b6c06b8f611 Mon Sep 17 00:00:00 2001 From: Franco Date: Sun, 24 May 2020 12:24:13 +0000 Subject: [PATCH 066/108] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 52 ++++++++++++++-------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index f6f12f8258..23460c47da 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -779,24 +779,24 @@ \n Los PDI de OsmAnd están siendo desarrollados activamente. Nuestro proyecto y su continuo progreso, se basa en contribuciones económicas para desarrollar y probar nuevas funcionalidades. Por favor, considera comprar OsmAnd+, financiar nuevas funciones o hacer una donación general en https://osmand.net. Navegación y Mapas OsmAnd+ Visor y navegador móvil global de mapas OSM con y sin conexión - OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) + OsmAnd+ (OSM Automated Navigation Directions, y en español, Guía de Navegación Automatizada de OSM) \n -\nOsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz. +\nOsmAnd+ es un software de navegación de código abierto con acceso a una amplia variedad de datos globales de OSM. Todos los datos del mapa (vectores y teselas), pueden ser almacenados en la memoria del teléfono para su uso sin conexión. Ofrece funcionalidades de rutas con y sin conexión, incluyendo guía de giro-a-giro por voz. \n -\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones. +\n OsmAnd+ es la versión de pago de la aplicación, comprándola ayudas al proyecto, financias el desarrollo de nuevas funciones, y recibes las últimas actualizaciones. \n -\n Algunas de las funciones fundamentales: -\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo) -\n - Mapas mundiales vectoriales compactos disponibles -\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación -\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable +\n Algunas de las funciones fundamentales: +\n - Completa funcionalidad sin conexión (guarda los mapas vectoriales o teselas descargados en el almacenamiento del dispositivo) +\n - Mapas mundiales vectoriales compactos disponibles +\n - Descarga ilimitada de mapas de países o regiones directamente desde la aplicación +\n - Posibilidad de superponer varias capas de mapa, como GPX o rutas de navegación, Puntos de Interés, Favoritos, curvas de nivel, paradas de transporte público, mapas adicionales con transparencia personalizable \n -\n - Búsqueda sin conexión de direcciones y sitios (PDI) -\n - Rutas sin conexión para distancias de rango medio -\n - Modos de automóvil, bicicleta y peatón con opcional: -\n - Cambio automático de modo diurno/nocturno -\n - Zoom del mapa según la velocidad -\n - Alineación del mapa, según brújula o dirección del movimiento +\n - Búsqueda sin conexión de direcciones y sitios (PDI) +\n - Rutas sin conexión para distancias de rango medio +\n - Modos de automóvil, bicicleta y peatón con opcional: +\n - Cambio automático de modo diurno/nocturno +\n - Zoom del mapa según la velocidad +\n - Alineación del mapa, según brújula o dirección del movimiento \n - Indicación de carriles, mostrar límites de velocidad, voces grabadas y sintetizadas \n Crear filtro PDI @@ -2437,7 +2437,7 @@ Sin fotos aquí. Instalar Mejorar cobertura de fotos con Mapillary - Instala Mapillary para añadir una o más fotos a esta ubicación del mapa. + Instala Mapillary para añadir fotos a esta ubicación del mapa. Abrir Mapillary Imagen de Mapillary Distancia recorrida @@ -2501,7 +2501,7 @@ Añadir archivos GPX Importa archivos GPX o graba trazas. Añadir favoritos - Importar Favoritos o añadir mediante puntos de marcación en el mapa. + Importa los Favoritos o añádelos marcando puntos en el mapa. Importar archivo GPX El archivo «%1$s» no contiene puntos de referencia, ¿Quieres importarlo como una traza? Mover punto @@ -2601,7 +2601,7 @@ Muestra líneas direccionales desde su ubicación hasta los marcadores activos. Muestra una o dos flechas indicando la dirección a los marcadores activos. Elige cómo mostrar la distancia a los marcadores activos. - Define el número de indicadores de dirección: + Define el número de indicadores de dirección. Aspecto en el mapa Buscando trazas con puntos de referencia Más @@ -2614,7 +2614,7 @@ Pulsa un marcador en el mapa para moverlo al primer lugar de los marcadores activos, sin abrir el menú contextual. Activar «Una pulsación» ¡Hacer notas multimedia! - Añade una nota de audio, vídeo o foto para cada punto del mapa, utilizando el widget o el menú contextual. + Añade una nota de audio, vídeo o foto a cualquier punto del mapa, usando el widget o el menú contextual. Notas multimedia por fecha Por fecha Por tipo @@ -3142,21 +3142,21 @@ Error OsmAnd falló la última vez. Por favor, ayúdanos a mejorar OsmAnd compartiendo el mensaje de error. OVNI - • Perfiles de aplicación: crea un perfil personalizado según tus necesidades, con un icono y color personalizado + • Perfiles de aplicación: crea un perfil personalizado según tus necesidades, con un icono y color personalizado \n -\n • Ahora puedes personalizar las velocidades predefinidas, máximas y mínimas de cualquier perfil +\n • Ahora puedes personalizar las velocidades predefinidas, máximas y mínimas de cualquier perfil \n -\n • Se ha añadido un widget para las coordenadas actuales +\n • Se ha añadido un widget para las coordenadas actuales \n -\n • Se añadieron opciones para mostrar la brújula y una regla radial en el mapa +\n • Se añadieron opciones para mostrar la brújula y una regla radial en el mapa \n -\n • Se ha corregido la grabación de trazas en segundo plano +\n • Se ha corregido la grabación de trazas en segundo plano \n -\n • Se mejoraron las descargas de mapas en segundo plano +\n • Se mejoraron las descargas de mapas en segundo plano \n -\n • Se ha corregido la selección de idioma de Wikipedia +\n • Se ha corregido la selección de idioma de Wikipedia \n -\n • Se ha corregido el comportamiento de los botones de la brújula durante la navegación +\n • Se ha corregido el comportamiento de los botones de la brújula durante la navegación \n \n • Otras correcciones de errores \n From 9441f75c8fb6250ee79dc32f36e2b69c93d75abb Mon Sep 17 00:00:00 2001 From: IgorEliezer Date: Sun, 24 May 2020 15:50:00 +0000 Subject: [PATCH 067/108] Translated using Weblate (Portuguese (Brazil)) Currently translated at 99.9% (3340 of 3341 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index 00fae9b1f8..b5c6b636f7 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -2055,7 +2055,7 @@ Pôr do Sol: %2$s Abrir o Mapillary Instalar Melhorar a cobertura fotográfica com Mapillary - Instale Mapillary para adicionar uma ou mais fotos para este local do mapa. + Instale Mapillary para adicionar fotos neste local do mapa. Fotos on-line Adicionar fotos Não há fotos aqui. @@ -2160,7 +2160,7 @@ Pôr do Sol: %2$s Mostrar linha direcional desde a sua posição até os locais dos marcadores ativos. Mostrar uma ou duas setas indicando a direção para os marcadores ativos. Escolher como exibir a distância para os marcadores ativos. - Especifique o número de indicadores de direção: + Especifique o número de indicadores de direção. Número de casas decimais Direita Esqueda @@ -2278,7 +2278,7 @@ Pôr do Sol: %2$s Transliterar nomes Arquivo %1$s não possui pontos de passagem, importe-o como uma trilha? Adicionar a um arquivo GPX - Adicione notas de áudio, vídeo ou foto em qualquer ponto do mapa, usando o widget ou o menu de contexto. + Adicione notas de áudio, vídeo ou foto em qualquer ponto do mapa, usando o widget ou os menus de contexto. Um botão para fazer com que a tela centralize o destino da rota, um destino selecionado anteriormente se tornaria o último destino intermediário. Um botão para fazer com que a tela centralize o novo destino da rota, substituindo o destino selecionado anteriormente (se houver). Um botão para fazer com que a tela centralize o primeiro destino intermediário. @@ -2539,7 +2539,7 @@ Pôr do Sol: %2$s Adicione arquivos GPX Importe arquivos GPX ou grave trilhas. Adicione Favoritos - Importe Favoritos ou adicione novos marcando pontos do mapa. + Importe Favoritos ou adicione-os marcando pontos do mapa. Importar arquivo GPX Mover Ponto Destinatários OSM @@ -2718,8 +2718,7 @@ Pôr do Sol: %2$s Arquivos GPX Hora de chegada intermediária Hora intermediária - Adquira OsmAnd Live para desbloquear todos estes recursos: -\nAtualização diária de mapa com downloads ilimitados, todos os plugins grátis e pagos, Wikipédia, Wikivoyage e muito mais. + Adquira OsmAnd Live para desbloquear todos estes recursos: Atualização diária de mapa com downloads ilimitados, todos os plugins pagos grátis, Wikipédia, Wikivoyage e muito mais. Modificação do estilo padrão para aumentar o contraste de vias de pedestre e bicicleta. Usa as cores Mapnik antigo. Para condução off-road com base no estilo \"Topo\" e para utilização com imagens de satélite verdes como mapa de fundo. Espessura de via principal reduzido, espessura das trilhas, caminhos, ciclovias e outras vias aumentado. Para navegação náutica. Apresenta boias, faróis, vias fluviais, vias e sinais marítimos, portos, serviços de navegação e curvas batimétricas. @@ -3451,7 +3450,7 @@ Pôr do Sol: %2$s Efeito colateral: como resultado da filtragem por precisão, os pontos podem estar totalmente ausentes por ex. embaixo de pontes, sob árvores, entre prédios altos ou com certas condições climáticas. Recomendação: É difícil prever o que será gravado e o que não será, talvez seja melhor desativar esse filtro. Observação: se o GPS estava desligado imediatamente antes de uma gravação, o primeiro ponto medido pode ter uma precisão diminuída; portanto, em nosso código, podemos esperar um segundo antes da gravação de um ponto (ou gravar o melhor de três pontos consecutivos, etc.), mas isso ainda não foi implementado. - Esse filtro evita que pontos duplicados sejam gravados onde muito pouco movimento real possa ter ocorrido, cria uma aparência espacial mais agradável das faixas que não são processadas posteriormente posteriormente. + Esse filtro evita que pontos duplicados sejam gravados onde muito pouco movimento real possa ter ocorrido, cria uma aparência espacial mais agradável das trilhas que não são processadas posteriormente. Efeitos colaterais: Períodos em repouso não são registrados em absoluto ou em apenas um ponto cada. Pequenos movimentos (do mundo real) (por exemplo, de lado, para marcar um possível desvio na sua viagem) podem ser filtrados. Seu arquivo contém menos informações para pós-processamento e possui estatísticas piores ao filtrar pontos obviamente redundantes no tempo de gravação, mantendo potencialmente artefatos causados por má recepção ou efeitos de chipset GPS. Recomendação: Uma configuração de 5 metros pode funcionar bem se você não precisar capturar detalhes mais refinados do que isso e não desejar capturar dados explicitamente enquanto estiver em repouso. Buffer de tempo From 0a5b8bac7cf114f7695719baec94797e2f3c81c4 Mon Sep 17 00:00:00 2001 From: IgorEliezer Date: Sun, 24 May 2020 15:47:34 +0000 Subject: [PATCH 068/108] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3804 of 3804 strings) --- OsmAnd/res/values-pt-rBR/phrases.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/phrases.xml b/OsmAnd/res/values-pt-rBR/phrases.xml index ff4221d368..39a4535dfc 100644 --- a/OsmAnd/res/values-pt-rBR/phrases.xml +++ b/OsmAnd/res/values-pt-rBR/phrases.xml @@ -242,7 +242,7 @@ Telesquis Telecorda Teleférico de carga - "Esteira rolante " + Esteira rolante Túnel Ponte Radar @@ -1809,11 +1809,11 @@ Aluguel de bicicletas: não Bomba Bomba de bicicleta: não - "Ferramentas para reparação " + Ferramentas para reparação Ferramentas para reparação de bicicleta DIY: não - "Limpeza " + Limpeza Limpeza de bicicletas: não - "Correia " + Correia Ferramenta para correia de bicicleta: não Venda de bicicletas de segunda mão Venda de bicicletas de segunda mão: não @@ -2091,7 +2091,7 @@ Período histórico: império antigo (2686 – 2181 a.C.) Período histórico: primeiro período intermediário (2181 – 2055 a.C.) Período histórico: segundo período intermediário (1650 – 1550 a.C.) - "Período histórico: terceiro período intermediário (1069 – 664 a.C.) " + Período histórico: terceiro período intermediário (1069 – 664 a.C.) Período histórico: primeiro período persa Período histórico: último período (664 – 332 a.C.) Período histórico: segundo período persa @@ -3502,7 +3502,7 @@ Afloramento Sem contato Não aceita Contactless - "Risco nuclear " + Risco nuclear Risco de erosão Risco de avalanche Via escorregadia @@ -3544,7 +3544,7 @@ Acadêmicos Crianças Atol - "Portal de pedágio " + Portal de pedágio Creche Denotação Monumento natural From 7f7a409ace4088dd1a8a5097530926983ae2ede3 Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 24 May 2020 11:12:25 +0000 Subject: [PATCH 069/108] Translated using Weblate (Esperanto) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-eo/strings.xml | 26 +++++++++++++------------- 1 file changed, 13 insertions(+), 13 deletions(-) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index cbc945ce70..1eb838c465 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -2424,13 +2424,13 @@ Neniuj fotoj tie ĉi. Instali Pliigi fotan atingon de Mapillary - Instalu Mapillary por aldoni unu aŭ pli fotojn al tiu ĉi loko sur la mapo. + Instalu Mapillary por aldoni fotojn al tiu ĉi loko sur la mapo. Malfermi Mapillary Mapillary-foto Korektita distanco Permesoj Ne povas enporti dosieron. Bonvolu kontroli, ĉu OsmAnd estas permesata por legi ĝin. - Radiusa mezurilo + Cirkelo Reŝargi Reŝargi kahelojn por ĝisdatigi datumojn. Kahela memoro @@ -2589,7 +2589,7 @@ Vidigi direktantan linion el via pozicio al pozicioj de aktivaj map-markoj. Vidigi unu aŭ du sagetojn indikantajn direkton al map-markoj. Elekti kiel vidigi distancon al aktivaj map-markoj. - Nombro da indikiloj de direkto por vidigi: + Nombro da indikiloj de direkto por vidigi. Serĉado de kursoj kun navigadpunktoj Pli Krei aŭ redakti OSM-objektojn @@ -2891,7 +2891,7 @@ Speco de vojo Pavimo Glateco - Klineco + Dekliveco Aldoni hejmon Aldoni laborejon Laborejo @@ -3129,23 +3129,23 @@ Paneo OsmAnd paneis dum la antaŭa starto. Helpu al ni plibonigi la aplikaĵon per sendi mesaĝon pri eraro. NIFO - • profiloj de aplikaĵo: krei profilojn laŭ viaj bezonoj kun propra emblemo kaj koloro + • profiloj de aplikaĵo: krei profilojn laŭ viaj bezonoj kun propra emblemo kaj koloro \n -\n • agordo por aldoni kutiman, minimuman kaj maksimuman rapidon por profilo (por kalkuli esperatan tempon de alveno) +\n • agordo por aldoni kutiman, minimuman kaj maksimuman rapidon por profilo (por kalkuli esperatan tempon de alveno) \n \n • fenestraĵo montranta koordinatojn \n -\n • eblo montri kompason kun angul-mezurilo sur la mapo +\n • eblo mezuri distancojn per cirkelo \n -\n • riparita registrado de spuro fone +\n • riparita registrado de spuro fone \n -\n • restarigita eblaĵo “teni ekranon ŝaltita” +\n • restarigita eblaĵo “teni ekranon ŝaltita” \n -\n • plibonigita elŝuto de mapoj fone +\n • plibonigita elŝuto de mapoj fone \n -\n • riparita elekto de lingvo por Vikipedio +\n • riparita elekto de lingvo por Vikipedio \n -\n • riparita sinteno de kompaso butono dum navigado +\n • riparita sinteno de kompaso butono dum navigado \n \n • riparoj de aliaj eraroj \n @@ -3676,7 +3676,7 @@ Enreta spurilo Butono de rapida ago OsmAnd + Mapillary - Radius‑mezurilo + Cirkelo Distanc-mezurilo Vojaĝo (Vikivojaĝoj kaj Vikipedio) Map‑markoj From 6283d5a3d7873978a292c1e28488b8ff90a3c92c Mon Sep 17 00:00:00 2001 From: Verdulo Date: Sun, 24 May 2020 13:55:24 +0000 Subject: [PATCH 070/108] Translated using Weblate (Esperanto) Currently translated at 100.0% (3804 of 3804 strings) --- OsmAnd/res/values-eo/phrases.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-eo/phrases.xml b/OsmAnd/res/values-eo/phrases.xml index 26b6cbd469..4e51aea33c 100644 --- a/OsmAnd/res/values-eo/phrases.xml +++ b/OsmAnd/res/values-eo/phrases.xml @@ -958,7 +958,7 @@ Marmarko: supra-marko Marnavigado: eta metiejo Marmarko: bolardo - Marmarko: radara transsend-respond-ilo (ang. transponder) + Marmarko: radara transsend‑respondilo Marmarko: radiostacio Signalstacio: trafiko Signalstacio: averto @@ -1289,8 +1289,8 @@ Kun dediĉitaj ejoj por gepatroj Sen dediĉitaj ejoj por gepatroj Dediĉitaj ejoj por gepatroj - Nombro da homoj en vagoneto/seĝo - Nombro da homoj hore + Nombro de homoj en vagoneto/seĝo + Nombro de homoj hore Mezuma vojaĝ-tempo (en minutoj) Tegmenteto Sen tegmenteto @@ -1489,7 +1489,7 @@ Inoj malpermesataj Sen-elaŭtiĝa servo (aŭtoparko): ne jes - Sen-elaŭtiĝa servo (trans-veturo): ne + Sen-elaŭtiĝa servo (transveturo): ne Nomo de bierfarejo jes Sen bierfarejeto-restoracio @@ -1969,8 +1969,8 @@ Energifonto (ŝtopilo): CEE 7/4 (F-tipo) Energifonto (ŝtopilo): CEE 7/5 (E-tipo) Energifonto (ŝtopilo): NEMA 5-15 (B-tipo) - Nombro da tendoj - Nombro da kampad‑veturiloj + Nombro de tendoj + Nombro de kampad‑veturiloj Hundoj permesataj Hundoj malpermesataj Orkestrejeto @@ -1978,7 +1978,7 @@ Informo por malkapabluloj Informo por blinduloj Informo por surduloj - Kiom da ŝtupoj + Nombro de ŝtupoj Ŝtonstaka marko Defibrililo Dresejo @@ -2417,7 +2417,7 @@ San-servejo: kampa malsanulejo Diametro de hidranto Premo de hidranto - Kiom da hidrantoj + Nombro de hidrantoj Profundo Teleskopo San-servejo: kuracistejo @@ -2436,7 +2436,7 @@ supertersurfaca (frost-imuna) Manapoteko Pesilo publika - Nombro da litoj + Nombro de litoj Kabineto de doktoro de medicino Kabineto de terapiisto Kabineto de piedisto @@ -2808,8 +2808,8 @@ Seĝoj ekstere Pago Hejmliverado - Sen-elaŭtiga servo (aŭtoparko) - Sen-elaŭtiga servo (trans-veturo) + Sen-elaŭtiĝa servo (aŭtoparko) + Sen-elaŭtiĝa servo (transveturo) Elportado Kokteloj Metia bierfarejeto From ddd1c0652dc509f69b8a02857d48ba2af2d13f72 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Sun, 24 May 2020 02:28:16 +0000 Subject: [PATCH 071/108] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index f246ea92d1..620eef42b9 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -2426,7 +2426,7 @@ 這裡沒有照片。 安裝 提高 Mapillary 照片覆蓋的範圍 - 安裝 Mapillary 以將一張或更多張的照片增加到此地圖位置。 + 安裝 Mapillary 以將照片增加到此地圖位置。 開啟 Mapillary Mapillary 圖片 距離已校正 @@ -2490,7 +2490,7 @@ 新增 GPX 檔案 匯入 GPX 檔案或錄製軌跡。 增加到我的收藏 - 匯入最愛或透過地圖上的標記點新增。 + 匯入最愛或透過地圖上的標記點來新增它們。 匯入 GPX 檔案 %1$s 檔案不包含航點,要將其匯入軌跡嗎? 移動標點 @@ -2588,7 +2588,7 @@ 選擇如何顯示活動標記的距離。 - 指定方向指示數量: + 指定方向指示數量。 標記為已通過的標點將顯現在此螢幕上。 顯示指引路線到活動標記位置。 顯示一個或兩個箭頭指示方向到活動標記。 @@ -2602,7 +2602,7 @@ 標記 %s 已啟動。 「點一下」啟動 加註記! - 使用小工具或內容選單,增加音訊、視訊或照片附註在地圖上的每個標點。 + 使用小工具或內容選單,增加音訊、視訊或照片附註在地圖上的任何標點。 以日期排序的音訊/視訊註記 按照日期 按照類型 From aeac8d65d82e018c265fbe73e706751c1683aa06 Mon Sep 17 00:00:00 2001 From: Hakuchi Date: Sat, 23 May 2020 21:59:12 +0000 Subject: [PATCH 072/108] Translated using Weblate (German) Currently translated at 100.0% (267 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/de/ --- OsmAnd-telegram/res/values-de/strings.xml | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/OsmAnd-telegram/res/values-de/strings.xml b/OsmAnd-telegram/res/values-de/strings.xml index 5d9f88fb35..44f16c5612 100644 --- a/OsmAnd-telegram/res/values-de/strings.xml +++ b/OsmAnd-telegram/res/values-de/strings.xml @@ -44,7 +44,7 @@ Meinen Standort senden Position OsmAnd öffnen - "Live " + Live Registrierung in Telegram Sie benötigen ein Telegram-Konto, um die Standortfreigabe nutzen zu können. Bitte installieren Sie Telegram und richten Sie ein Konto ein. @@ -151,9 +151,7 @@ Standort freigeben Wählen Sie einen der Standortanbieter aus, um Ihren Standort freizugeben. Standort teilen - - OsmAnd Tracker ermöglicht es Ihnen, Ihren Standort zu teilen und den anderer in OsmAnd zu sehen.
-
Die App verwendet die API von Telegram, also benötigen Sie ein Telegram-Konto.
+ OsmAnd Tracker ermöglicht es Ihnen, Ihren Standort zu teilen und den anderer in OsmAnd zu sehen.

Die App verwendet die API von Telegram, also benötigen Sie ein Telegram-Konto.
Wählen Sie einen Namen, den Sie noch nicht benutzt haben %1$s hinzugefügt. Hinzufügen From 7ef3b77005e7388c5ac1cb767d6b05e9b2b89169 Mon Sep 17 00:00:00 2001 From: max-klaus Date: Mon, 25 May 2020 11:16:29 +0300 Subject: [PATCH 073/108] Added search tests --- .../resources/search/100_bridge_street.json | 6866 ++++++++++++++++ .../test/resources/search/carrer_de_vic.json | 6956 +++++++++++++++++ 2 files changed, 13822 insertions(+) create mode 100644 OsmAnd-java/src/test/resources/search/100_bridge_street.json create mode 100644 OsmAnd-java/src/test/resources/search/carrer_de_vic.json diff --git a/OsmAnd-java/src/test/resources/search/100_bridge_street.json b/OsmAnd-java/src/test/resources/search/100_bridge_street.json new file mode 100644 index 0000000000..84d7b0bc66 --- /dev/null +++ b/OsmAnd-java/src/test/resources/search/100_bridge_street.json @@ -0,0 +1,6866 @@ +{ + "settings": { + "lat": "43.75258", + "lon": "-70.46783", + "radiusLevel": 1, + "totalLimit": -1, + "lang": "", + "transliterateIfMissing": false, + "emptyQueryAllowed": false, + "sortByName": false + }, + "phrase": "100 Bridge Street", + "results": [ + "100.0, ", + "100, Bridge Street, Westbrook", + "100, Bridge Street, Yarmouth", + "Bridge Street", + "Bridge Street Dam", + "Bridge Street" + ], + "amenities": [ + { + "name": "International Avenue Bridge", + "lat": "45.16104", + "lon": "-67.30280", + "id": 736426949, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/International Avenue Bridge" + } + }, + { + "name": "Emerys Bridge Road", + "lat": "43.24381", + "lon": "-70.77249", + "id": 452805855, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "foot_yes": "yes", + "bicycle_yes": "yes", + "horse_yes": "yes", + "alt_name": "Mt Agamenticus Road" + } + }, + { + "name": "Memorial Bridge", + "lat": "43.08149", + "lon": "-70.75185", + "id": 451269827, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "bridge_type_movable": "movable", + "bridge_movable_drawbridge": "drawbridge", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "US 1" + } + }, + { + "name": "Sunday River Covered Bridge", + "lat": "44.49243", + "lon": "-70.84334", + "id": 721923553, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_pedestrian": "yes", + "covered_yes": "yes", + "tourism_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Sunday River Bridge" + } + }, + { + "name": "Town Landing at Bridge End", + "lat": "44.29071", + "lon": "-68.69120", + "id": 14319074654, + "subType": "slipway", + "type": "transportation" + }, + { + "name": "Tukey's Bridge Pathway", + "lat": "43.67673", + "lon": "-70.25669", + "id": 65132233, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "foot_yes": "yes", + "bridge_pedestrian": "yes", + "surface_paved": "paved", + "bicycle_yes": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance" + } + }, + { + "name": "Marsh Bridge Dam", + "lat": "44.02842", + "lon": "-69.59783", + "id": 716455838, + "subType": "dam", + "type": "man_made", + "additionalInfo": { + "ele": "32" + } + }, + { + "name": "Bridge Street", + "lat": "44.54744", + "lon": "-69.62828", + "id": 79664277, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "US 201;ME 137 Business;ME 100" + } + }, + { + "name": "Robyville Bridge", + "lat": "44.94339", + "lon": "-68.96858", + "id": 1414130467, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Robyville Bridge" + } + }, + { + "name": "North Anson Toll Bridge Pylon", + "lat": "44.85873", + "lon": "-69.86378", + "id": 601306297, + "subType": "attraction", + "type": "tourism" + }, + { + "name": "Durham Bridge Road", + "lat": "44.85733", + "lon": "-69.20571", + "id": 881924991, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "43.80652", + "lon": "-70.79869", + "id": 757192465, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes" + } + }, + { + "name": "Sarah Mildred Long Bridge", + "lat": "43.08533", + "lon": "-70.76285", + "id": 1016494949, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "foot_no": "no", + "bridge_car": "yes", + "bicycle_yes": "yes" + } + }, + { + "name": "Ferry Point Bridge", + "lat": "45.19206", + "lon": "-67.28356", + "id": 736427223, + "subType": "bridge", + "type": "man_made" + }, + { + "name": "Bridge Street", + "lat": "44.54734", + "lon": "-69.62828", + "id": 79522447, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "US 201;ME 100;ME 137 Business" + } + }, + { + "name": "Bridges Swamp", + "lat": "43.16828", + "lon": "-70.63703", + "id": 4419289956352, + "subType": "wetland", + "type": "natural", + "additionalInfo": { + "ele": "16" + } + }, + { + "name": "Bridge Street", + "lat": "44.39864", + "lon": "-70.97168", + "id": 661558361, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Chamberlain Bridge", + "lat": "46.17115", + "lon": "-69.20777", + "id": 13624836576, + "subType": "viewpoint", + "type": "tourism" + }, + { + "name": "Bridge Street", + "lat": "47.24314", + "lon": "-68.57999", + "id": 1188446125, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "43.67790", + "lon": "-70.36728", + "id": 1395012635, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "bridge_structure_beam": "beam", + "foot_no": "no", + "network": "lcn", + "operator": "METRO", + "route_bus_ref": "3" + } + }, + { + "name": "Black Bridge Road", + "lat": "44.59258", + "lon": "-70.56328", + "id": 553381561, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "44.54199", + "lon": "-67.88162", + "id": 86354657, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "US 1A" + } + }, + { + "name": "Center Bridge Road", + "lat": "44.25640", + "lon": "-70.17983", + "id": 1533190443, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Sagadahoc Bridge", + "lat": "43.91174", + "lon": "-69.80400", + "id": 22955093, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "US 1" + } + }, + { + "name": "Lovejoy Bridge", + "lat": "44.59343", + "lon": "-70.73369", + "id": 1062686813, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "covered_yes": "yes", + "historic_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Lovejoy Bridge" + } + }, + { + "name": "Bridge Street", + "lat": "44.82459", + "lon": "-70.33898", + "id": 825473529, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Foxwells Bridge Brook Dam", + "lat": "43.55676", + "lon": "-70.38116", + "id": 716457084, + "subType": "dam", + "type": "man_made", + "additionalInfo": { + "ele": "6" + } + }, + { + "name": "Goodwins Bridge Road", + "lat": "43.43187", + "lon": "-70.68775", + "id": 1444433161, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Badger Island Bridge", + "lat": "43.08343", + "lon": "-70.75116", + "id": 353057049, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "bridge_structure_truss": "truss", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "US 1" + } + }, + { + "name": "Lewiston-Auburn Railroad Bridge", + "lat": "44.09292", + "lon": "-70.22298", + "id": 10093557134, + "subType": "information", + "type": "tourism", + "additionalInfo": { + "information_history": "history" + } + }, + { + "name": "Pease Bridge Road", + "lat": "45.14700", + "lon": "-69.49797", + "id": 22965323, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "surface_paved": "paved" + } + }, + { + "name": "Tukey's Bridge", + "lat": "43.67596", + "lon": "-70.25641", + "id": 736361911, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Tukey's Bridge" + } + }, + { + "name": "Adams Bridge Road", + "lat": "43.31228", + "lon": "-70.75440", + "id": 1467631917, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "surface_unpaved": "unpaved" + } + }, + { + "name": "Clair-Fort Kent Bridge", + "lat": "47.25018", + "lon": "-68.60492", + "id": 652983473, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Fort Kent–Clair Border Crossing", + "ref": "NB 161" + } + }, + { + "name": "Edmundston-Madawaska Bridge", + "lat": "47.35893", + "lon": "-68.32863", + "id": 1420577395, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Edmundston–Madawaska Bridge" + } + }, + { + "name": "Androscoggin Swinging Bridge", + "lat": "43.91749", + "lon": "-69.97255", + "id": 79597535, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "foot_yes": "yes", + "bridge_pedestrian": "yes", + "bicycle_yes": "yes", + "historic_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Androscoggin Swinging Bridge", + "start_date": "1892" + } + }, + { + "name": "Broken Bridge Pond", + "lat": "44.31104", + "lon": "-70.81781", + "id": 1351756979, + "subType": "water", + "type": "natural" + }, + { + "name": "Bridge Street", + "lat": "44.23338", + "lon": "-69.77089", + "id": 451132547, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "44.10284", + "lon": "-70.21693", + "id": 793947121, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Flat Rock Bridge Road", + "lat": "43.34319", + "lon": "-70.96619", + "id": 23048699, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "surface_concrete": "concrete" + } + }, + { + "name": "Watson Settlement Bridge", + "lat": "46.20988", + "lon": "-67.79981", + "id": 1417157151, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Watson Settlement Bridge" + } + }, + { + "name": "Milltown Bridge", + "lat": "45.16966", + "lon": "-67.29658", + "id": 179609567, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Grist Mill Bridge", + "lat": "43.39197", + "lon": "-70.85102", + "id": 757186123, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Grist Mill Bridge (Lebanon, Maine)" + } + }, + { + "name": "Jordan Bridge Road", + "lat": "44.10454", + "lon": "-70.10331", + "id": 1224171419, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Clair-Fort Kent Bridge", + "lat": "47.24965", + "lon": "-68.60428", + "id": 22772981, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "US 1;ME 161 Spur" + } + }, + { + "name": "Twin Bridges", + "lat": "44.34216", + "lon": "-70.19017", + "id": 6602003890, + "subType": "hamlet", + "type": "administrative" + }, + { + "name": "Wiggly Bridge", + "lat": "43.13668", + "lon": "-70.64969", + "id": 1355148917, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_structure_suspension": "suspension" + } + }, + { + "name": "Eliot Bridge", + "lat": "43.19046", + "lon": "-70.82525", + "id": 440176713, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "45.05273", + "lon": "-69.88506", + "id": 450152289, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 16" + } + }, + { + "name": "Casco Bay Bridge", + "lat": "43.64738", + "lon": "-70.25965", + "id": 910860541, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Casco Bay Bridge" + } + }, + { + "name": "Bridge Street", + "lat": "46.77422", + "lon": "-67.83216", + "id": 179623875, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "surface_concrete": "concrete", + "ref": "US 1A" + } + }, + { + "name": "Veterans Memorial Bridge", + "lat": "43.64406", + "lon": "-70.28216", + "id": 354835551, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Durrells Bridge Road", + "lat": "43.37887", + "lon": "-70.50510", + "id": 994710771, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "44.58772", + "lon": "-69.59403", + "id": 79521477, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 100;ME 139;ME 11" + } + }, + { + "name": "Bridgewater Corner", + "lat": "46.45116", + "lon": "-67.85169", + "id": 317724554, + "subType": "hamlet", + "type": "administrative", + "additionalInfo": { + "ele": "160" + } + }, + { + "name": "Campbell Field Bridge", + "lat": "45.08625", + "lon": "-70.29606", + "id": 1251230383, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "foot_yes": "yes", + "horse_no": "no", + "bridge_pedestrian": "yes", + "bicycle_yes": "yes", + "motor_vehicle_no": "no" + } + }, + { + "name": "International Avenue Bridge", + "lat": "45.16109", + "lon": "-67.30265", + "id": 310455227, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridgewater", + "lat": "46.42793", + "lon": "-67.84401", + "id": 317751438, + "subType": "village", + "type": "administrative", + "additionalInfo": { + "ele": "130", + "population": "593" + } + }, + { + "name": "Wagner Bridge Road", + "lat": "44.14483", + "lon": "-69.41576", + "id": 523436365, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Ferry Point Bridge", + "lat": "45.19228", + "lon": "-67.28377", + "id": 360101365, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Kittery Bridge Bypass Buoy 4", + "lat": "43.08707", + "lon": "-70.75873", + "id": 6819116278, + "subType": "buoy_lateral", + "type": "seamark", + "additionalInfo": { + "description": "Navigation Buoy" + } + }, + { + "name": "Bridge Hill", + "lat": "43.80370", + "lon": "-69.81061", + "id": 716424886, + "subType": "peak", + "type": "natural", + "additionalInfo": { + "ele": "47" + } + }, + { + "name": "Penobscot Bridge", + "lat": "44.79991", + "lon": "-68.76566", + "id": 86939177, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 15 Business" + } + }, + { + "name": "Bridgeton Junction", + "lat": "43.86784", + "lon": "-70.80167", + "id": 6157601602, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Piscataqua River Bridge", + "lat": "43.09379", + "lon": "-70.76423", + "id": 23052057, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "horse_no": "no", + "foot_no": "no", + "hgv_designated": "designated", + "bicycle_no": "no", + "bridge_structure_humpback": "humpback", + "toll_no": "no", + "ref": "I 95" + } + }, + { + "name": "Saint Leonard–Van Buren Bridge", + "names": { + "fr": "Pont Saint Léonard – Van Buren" + }, + "lat": "47.16006", + "lon": "-67.92950", + "id": 794625557, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridgewater Fire Department", + "lat": "46.42483", + "lon": "-67.84334", + "id": 14359347818, + "subType": "fire_station", + "type": "emergency" + }, + { + "name": "Kittery Bridge Bypass Buoy 6", + "lat": "43.08860", + "lon": "-70.76120", + "id": 6819116280, + "subType": "buoy_lateral", + "type": "seamark", + "additionalInfo": { + "description": "Navigation Buoy" + } + }, + { + "name": "Trout Brook Bridge", + "lat": "44.10374", + "lon": "-69.61772", + "id": 1524565397, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "covered_yes": "yes", + "bridge_railway": "yes", + "operator": "Wiscasset, Waterville and Farmington Railway" + } + }, + { + "name": "Veterans Memorial Bridge Pathway", + "lat": "43.63885", + "lon": "-70.29325", + "id": 354820651, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_paved": "paved", + "bridge_bicycle": "yes", + "network": "lcn" + } + }, + { + "name": "Bridges Cemetery", + "lat": "44.47869", + "lon": "-68.73116", + "id": 716424896, + "subType": "grave_yard", + "type": "tourism", + "additionalInfo": { + "ele": "41" + } + }, + { + "name": "Veterans Bridge Pathway", + "lat": "43.64401", + "lon": "-70.28212", + "id": 365198485, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_paved": "paved", + "foot_yes": "yes", + "bridge_bicycle": "yes", + "network": "lcn" + } + }, + { + "name": "Piscataqua River Bridge", + "lat": "43.09273", + "lon": "-70.76629", + "id": 1417566703, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Piscataqua River Bridge" + } + }, + { + "name": "Jubilee Park Covered Bridge", + "lat": "43.49745", + "lon": "-70.44871", + "id": 10892480814, + "subType": "park", + "type": "entertainment" + }, + { + "name": "Bridges Drive", + "lat": "43.61037", + "lon": "-70.36750", + "id": 22814731, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Swinging Bridge", + "lat": "44.76266", + "lon": "-69.72033", + "id": 550547591, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_pedestrian": "yes" + } + }, + { + "name": "Edgecomb Bridge", + "lat": "43.67383", + "lon": "-70.69539", + "id": 1019238553, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "ref": "ME 117" + } + }, + { + "name": "Bridge Street", + "lat": "44.54351", + "lon": "-70.54656", + "id": 481641389, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Road", + "lat": "45.16926", + "lon": "-69.36068", + "id": 855924057, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 23" + } + }, + { + "name": "Trenton Bridge Lobster Pound", + "lat": "44.43243", + "lon": "-68.36880", + "id": 5905672028, + "subType": "restaurant", + "type": "sustenance", + "openingHours": "Mo-Fr 08:30-16:30", + "additionalInfo": { + "smoking_outside": "outside", + "takeaway_filter_yes": "yes", + "outdoor_seating_yes": "yes", + "outdoor_seating_filter_yes": "yes", + "takeaway_yes": "yes", + "opening_hours": "Mo-Fr 08:30-16:30", + "capacity": "299", + "cuisine": "lobster,_seafood" + } + }, + { + "name": "Big Bridge Hill", + "lat": "43.22232", + "lon": "-70.63368", + "id": 716423598, + "subType": "peak", + "type": "natural", + "additionalInfo": { + "ele": "41" + } + }, + { + "name": "Petit Pont International", + "enName": "Little International Bridge", + "lat": "47.45977", + "lon": "-69.22419", + "id": 1421093035, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_pedestrian": "yes" + } + }, + { + "name": "Bridgeside Market", + "lat": "44.71815", + "lon": "-69.79788", + "id": 5651089200, + "subType": "fuel", + "type": "transportation" + }, + { + "name": "Emery's Bridge", + "lat": "43.24709", + "lon": "-70.72745", + "id": 1487262977, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes" + } + }, + { + "name": "Cobbs Bridge Road", + "lat": "43.97995", + "lon": "-70.26538", + "id": 992741765, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Abol Bridge Campground", + "lat": "45.83562", + "lon": "-68.96625", + "id": 4158722384, + "subType": "camp_site", + "type": "tourism" + }, + { + "name": "Bridge Street Dam", + "lat": "43.80180", + "lon": "-70.18172", + "id": 1062267299, + "subType": "dam", + "type": "man_made" + }, + { + "name": "Tukey's Bridge", + "lat": "43.67704", + "lon": "-70.25658", + "id": 65131861, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "horse_no": "no", + "foot_no": "no", + "hgv_designated": "designated", + "bicycle_no": "no", + "operator": "METRO", + "ref": "I 295;US 1;ME 26", + "route_bus_ref": "BRZ, 9A" + } + }, + { + "name": "Bridge Street", + "lat": "44.58718", + "lon": "-69.59049", + "id": 79521545, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 100;ME 139;ME 11" + } + }, + { + "name": "Veterans Memorial Bridge", + "lat": "43.64440", + "lon": "-70.28141", + "id": 736364371, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Veteran's Memorial Bridge (Portland, Maine)" + } + }, + { + "name": "Tukey's Bridge", + "lat": "43.67704", + "lon": "-70.25632", + "id": 65131863, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "horse_no": "no", + "foot_no": "no", + "hgv_designated": "designated", + "bicycle_no": "no", + "operator": "METRO", + "ref": "I 295;US 1;ME 26", + "route_bus_ref": "BRZ, 9B" + } + }, + { + "name": "Martin Point Bridge", + "lat": "43.69113", + "lon": "-70.24527", + "id": 22821285, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "US 1" + } + }, + { + "name": "Brookline Road", + "lat": "44.60646", + "lon": "-68.87211", + "id": 1270184973, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_dirt": "dirt", + "foot_yes": "yes", + "bridge_pedestrian": "yes", + "bicycle_yes": "yes", + "bridge_structure_truss": "truss", + "motor_vehicle_no": "no", + "artist_name": "American Bridge Company", + "start_date": "1908" + } + }, + { + "name": "Bridge Street", + "lat": "47.36143", + "lon": "-68.32859", + "id": 10178529, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Westport Bridge Road", + "lat": "43.97308", + "lon": "-69.67519", + "id": 22911905, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bennett Bridge", + "lat": "44.91914", + "lon": "-71.03822", + "id": 1300560123, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "wikipedia": "http://en.wikipedia.org/wiki/Bennett Bridge" + } + }, + { + "name": "Bay Bridge Estates", + "lat": "43.93590", + "lon": "-69.87981", + "id": 1176315549, + "subType": "residential", + "type": "administrative" + }, + { + "name": "Bridge Street", + "lat": "44.31692", + "lon": "-69.77303", + "id": 22875357, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "ME 105 Extension" + } + }, + { + "name": "Bridge Street", + "lat": "43.80731", + "lon": "-70.88894", + "id": 757191779, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "ref": "ME 25" + } + }, + { + "name": "Bridge Street", + "lat": "44.23081", + "lon": "-69.77432", + "id": 22875359, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "US 201" + } + }, + { + "name": "Bridge Street", + "lat": "44.66224", + "lon": "-70.15079", + "id": 838960009, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "hgv_yes": "yes", + "ref": "US 2;ME 4;ME 43" + } + }, + { + "name": "International Avenue Bridge", + "lat": "45.16110", + "lon": "-67.30390", + "id": 652976675, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "NB 1" + } + }, + { + "name": "Twin Bridge Market", + "lat": "44.34220", + "lon": "-70.18227", + "id": 10118464656, + "subType": "convenience", + "type": "shop" + }, + { + "name": "Bridge Street", + "lat": "43.46653", + "lon": "-70.79540", + "id": 569183011, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "alt_name": "State Route 224", + "ref": "ME 224" + } + }, + { + "name": "International Avenue Bridge", + "lat": "45.16098", + "lon": "-67.30263", + "id": 652976677, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Bridge Street", + "lat": "44.52567", + "lon": "-67.61491", + "id": 1391500321, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Ferry Point Bridge", + "lat": "45.19187", + "lon": "-67.28360", + "id": 179608805, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "ME 9" + } + }, + { + "name": "Wire Bridge Road", + "lat": "44.89086", + "lon": "-70.09237", + "id": 389800811, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Chester G. Bridges Tennis Complex", + "lat": "44.90527", + "lon": "-68.66603", + "id": 716469478, + "subType": "park", + "type": "entertainment", + "additionalInfo": { + "ele": "35" + } + }, + { + "name": "Bridge Street", + "lat": "44.58758", + "lon": "-69.59255", + "id": 79521519, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 100;ME 139;ME 11" + } + }, + { + "name": "Duck Brook Bridge", + "lat": "44.39161", + "lon": "-68.23587", + "id": 590083197, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "foot_yes": "yes", + "bicycle_yes": "yes", + "horse_yes": "yes", + "motor_vehicle_no": "no" + } + }, + { + "name": "Milltown Bridge", + "lat": "45.16969", + "lon": "-67.29658", + "id": 736427071, + "subType": "bridge", + "type": "man_made" + }, + { + "name": "Piscataqua River Bridge", + "lat": "43.09389", + "lon": "-70.76433", + "id": 58949401, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes", + "horse_no": "no", + "foot_no": "no", + "hgv_designated": "designated", + "bicycle_no": "no", + "bridge_structure_humpback": "humpback", + "toll_no": "no", + "ref": "I 95" + } + }, + { + "name": "Veterans Memorial Bridge", + "lat": "43.64413", + "lon": "-70.28222", + "id": 354850939, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Two Cent Bridge", + "lat": "44.55091", + "lon": "-69.62521", + "id": 22868417, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_pedestrian": "yes" + } + }, + { + "name": "Emerys Bridge", + "lat": "43.24661", + "lon": "-70.72711", + "id": 317646608, + "subType": "hamlet", + "type": "administrative", + "additionalInfo": { + "ele": "32" + } + }, + { + "name": "Sebasticook Bridge Road", + "lat": "44.58568", + "lon": "-69.54985", + "id": 844692347, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "ME 139" + } + }, + { + "name": "Gold Star Memorial Bridge", + "lat": "46.68517", + "lon": "-68.01528", + "id": 194671421, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "surface_concrete": "concrete" + } + }, + { + "name": "Vietnam Veterans Memorial Bridge", + "lat": "44.11534", + "lon": "-70.21401", + "id": 190561149, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "operator": "Lewiston-Auburn Citylink", + "route_bus_ref": "6" + } + }, + { + "name": "Vietnam Veterans Memorial Bridge", + "lat": "44.11526", + "lon": "-70.21412", + "id": 190561137, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "operator": "Lewiston-Auburn Citylink", + "route_bus_ref": "6" + } + }, + { + "name": "Bridgewater Grammar School", + "lat": "46.42172", + "lon": "-67.84504", + "id": 716461146, + "subType": "school", + "type": "education", + "additionalInfo": { + "ele": "125" + } + }, + { + "name": "Bay Bridge Landing Wetland Park", + "lat": "43.93422", + "lon": "-69.88905", + "id": 1244287705, + "subType": "park", + "type": "entertainment" + }, + { + "name": "Wilder Bridge", + "lat": "43.90932", + "lon": "-69.80039", + "id": 255622351, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "ME 127" + } + }, + { + "name": "The Bridge Street Green", + "lat": "44.66229", + "lon": "-70.15522", + "id": 1176243883, + "subType": "park", + "type": "entertainment" + }, + { + "name": "Casco Bay Bridge", + "lat": "43.64230", + "lon": "-70.25656", + "id": 100180481, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "ME 77" + } + }, + { + "name": "Hemlock Bridge", + "lat": "44.07960", + "lon": "-70.90286", + "id": 1004424165, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "covered_yes": "yes", + "historic_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Hemlock Bridge" + } + }, + { + "name": "Casco Bay Bridge", + "lat": "43.64226", + "lon": "-70.25671", + "id": 100180487, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "network": "ncn", + "operator": "East Coast Greenway Alliance", + "ref": "ME 77" + } + }, + { + "name": "Vietnam Veterans Memorial Bridge", + "lat": "44.11729", + "lon": "-70.21719", + "id": 20439497, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "operator": "Lewiston-Auburn Citylink", + "route_bus_ref": "6" + } + }, + { + "name": "Round Pond Bridge", + "lat": "46.22896", + "lon": "-69.56659", + "id": 13624836570, + "subType": "viewpoint", + "type": "tourism" + }, + { + "name": "International Avenue Bridge", + "lat": "45.16099", + "lon": "-67.30390", + "id": 179619895, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "1" + } + }, + { + "name": "Bridge Street Dam", + "lat": "43.46628", + "lon": "-70.79536", + "id": 1467990395, + "subType": "dam", + "type": "man_made", + "additionalInfo": { + "ele": "244" + } + }, + { + "name": "Babb's Bridge", + "lat": "43.76606", + "lon": "-70.44792", + "id": 1378377377, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "covered_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Babb's Bridge" + } + }, + { + "name": "Porter-Parsonsfield Bridge", + "lat": "43.79122", + "lon": "-70.93793", + "id": 1102411581, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_pedestrian": "yes", + "covered_yes": "yes", + "historic_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Porter-Parsonsfield Bridge" + } + }, + { + "name": "Covered Bridge Road", + "lat": "44.94355", + "lon": "-68.96863", + "id": 602618593, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Franklin Delano Roosevelt Bridge", + "lat": "44.85984", + "lon": "-66.97860", + "id": 22994831, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Franklin Delano Roosevelt Bridge" + } + }, + { + "name": "Swetts Bridge Road", + "lat": "43.46312", + "lon": "-70.70809", + "id": 1492069375, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes" + } + }, + { + "name": "Caution, wetland,no bridges", + "lat": "46.08203", + "lon": "-68.79149", + "id": 8792738506, + "subType": "information", + "type": "tourism" + }, + { + "name": "Caution, wetland,no bridges", + "lat": "46.08203", + "lon": "-68.79149", + "id": 8792738506, + "subType": "information_guidepost", + "type": "tourism" + }, + { + "name": "Bridge Ruins", + "lat": "43.30496", + "lon": "-70.90621", + "id": 580558153, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "access_no": "no", + "horse_no": "no", + "foot_no": "no", + "bicycle_no": "no", + "motor_vehicle_no": "no" + } + }, + { + "name": "Bridge End Park", + "lat": "44.29056", + "lon": "-68.69157", + "id": 13147170864, + "subType": "park", + "type": "entertainment" + }, + { + "name": "Eliot Bridge", + "lat": "43.19080", + "lon": "-70.82592", + "id": 436896479, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes" + } + }, + { + "name": "Vietnam Veterans Memorial Bridge", + "lat": "44.11723", + "lon": "-70.21731", + "id": 119279563, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "operator": "Lewiston-Auburn Citylink", + "route_bus_ref": "6" + } + }, + { + "name": "Scotland Bridge Road", + "lat": "43.16019", + "lon": "-70.70912", + "id": 755809243, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "surface_asphalt": "asphalt", + "bridge_car": "yes" + } + }, + { + "name": "Armistice Bridge", + "lat": "44.43289", + "lon": "-69.00674", + "id": 263652897, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_pedestrian": "yes", + "surface_paved": "paved", + "motor_vehicle_no": "no", + "network": "ncn", + "operator": "East Coast Greenway Alliance" + } + }, + { + "name": "Bridge Academy Public Library", + "lat": "44.10484", + "lon": "-69.72613", + "id": 1528016587, + "subType": "library", + "type": "education", + "additionalInfo": { + "ele": "6", + "wikipedia": "http://en.wikipedia.org/wiki/Bridge Academy Public Library" + } + }, + { + "name": "Bridge Academy Public Library", + "lat": "44.10484", + "lon": "-69.72613", + "id": 1528016587, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "ele": "6", + "wikipedia": "http://en.wikipedia.org/wiki/Bridge Academy Public Library" + } + }, + { + "name": "Wiggly Bridge", + "lat": "43.13660", + "lon": "-70.64741", + "id": 1355483921, + "subType": "parking", + "type": "transportation", + "additionalInfo": { + "surface_asphalt": "asphalt", + "parking_surface": "surface", + "access_private": "private", + "capacity": "6" + } + }, + { + "name": "Carlton Bridge", + "lat": "43.91156", + "lon": "-69.80387", + "id": 350006785, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "access_private": "private", + "wikipedia": "http://en.wikipedia.org/wiki/Carlton Bridge" + } + }, + { + "name": "Bailey Island Bridge", + "lat": "43.74978", + "lon": "-69.98808", + "id": 1019482907, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "historic_yes": "yes", + "wikipedia": "http://en.wikipedia.org/wiki/Bailey Island Bridge", + "ref": "ME 24", + "start_date": "1928" + } + } + ], + "cities": [ + { + "name": "Hermon", + "lat": "44.81010", + "lon": "-68.91380", + "id": 158853983, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Lane", + "lat": "44.81057", + "lon": "-68.91543", + "id": 3669 + } + ], + "matchStreet": 1 + }, + { + "name": "Westbrook", + "lat": "43.67703", + "lon": "-70.37116", + "id": 158859102, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Westbrook Arterial", + "lat": "43.66841", + "lon": "-70.33286", + "id": 148869 + }, + { + "name": "Westbrook Public Works", + "lat": "43.66438", + "lon": "-70.37739", + "id": 121293 + }, + { + "name": "Westbrook Common", + "lat": "43.67653", + "lon": "-70.36657", + "id": 1561 + }, + { + "name": "Bridge Street", + "lat": "43.68016", + "lon": "-70.36840", + "id": 18, + "buildings": [ + { + "name": "3", + "lat": "43.67706", + "lon": "-70.36672", + "postcode": "04092" + }, + { + "name": "41", + "lat": "43.67875", + "lon": "-70.36737", + "postcode": "04092" + }, + { + "name": "42", + "lat": "43.67849", + "lon": "-70.36777", + "postcode": "04092" + }, + { + "name": "51", + "lat": "43.67891", + "lon": "-70.36767", + "postcode": "04092" + }, + { + "name": "67", + "lat": "43.67940", + "lon": "-70.36820", + "postcode": "04092" + }, + { + "name": "72", + "lat": "43.67894", + "lon": "-70.36818", + "postcode": "04092" + }, + { + "name": "75", + "lat": "43.67956", + "lon": "-70.36835", + "postcode": "04092" + }, + { + "name": "77", + "lat": "43.67959", + "lon": "-70.36838", + "postcode": "04092" + }, + { + "name": "80", + "lat": "43.67925", + "lon": "-70.36863", + "postcode": "04092" + }, + { + "name": "87", + "lat": "43.68016", + "lon": "-70.36840" + }, + { + "name": "90", + "lat": "43.67914", + "lon": "-70.36857", + "postcode": "04092" + }, + { + "name": "98", + "lat": "43.68001", + "lon": "-70.36953", + "postcode": "04092" + }, + { + "name": "100", + "lat": "43.68026", + "lon": "-70.36921", + "postcode": "04092" + }, + { + "name": "108", + "lat": "43.68044", + "lon": "-70.36898", + "postcode": "04092" + }, + { + "name": "116", + "lat": "43.68072", + "lon": "-70.36876", + "postcode": "04092" + }, + { + "name": "119", + "lat": "43.68060", + "lon": "-70.36825", + "postcode": "04092" + }, + { + "name": "128", + "lat": "43.68109", + "lon": "-70.36853", + "postcode": "04092" + }, + { + "name": "131", + "lat": "43.68085", + "lon": "-70.36784", + "postcode": "04092" + }, + { + "name": "134", + "lat": "43.68130", + "lon": "-70.36833", + "postcode": "04092" + }, + { + "name": "135", + "lat": "43.68113", + "lon": "-70.36780", + "postcode": "04092" + }, + { + "name": "146", + "lat": "43.68161", + "lon": "-70.36810", + "postcode": "04092" + }, + { + "name": "150", + "lat": "43.68168", + "lon": "-70.36801", + "postcode": "04092" + }, + { + "name": "151", + "lat": "43.68150", + "lon": "-70.36754", + "postcode": "04092" + }, + { + "name": "155", + "lat": "43.68173", + "lon": "-70.36732", + "postcode": "04092" + }, + { + "name": "159", + "lat": "43.68185", + "lon": "-70.36724", + "postcode": "04092" + }, + { + "name": "160", + "lat": "43.68206", + "lon": "-70.36782", + "postcode": "04092" + }, + { + "name": "162", + "lat": "43.68209", + "lon": "-70.36780", + "postcode": "04092" + }, + { + "name": "163", + "lat": "43.68203", + "lon": "-70.36709", + "postcode": "04092" + }, + { + "name": "172", + "lat": "43.68241", + "lon": "-70.36754", + "postcode": "04092" + }, + { + "name": "173", + "lat": "43.68220", + "lon": "-70.36694", + "postcode": "04092" + }, + { + "name": "178", + "lat": "43.68257", + "lon": "-70.36735", + "postcode": "04092" + }, + { + "name": "181", + "lat": "43.68252", + "lon": "-70.36681", + "postcode": "04092" + }, + { + "name": "182", + "lat": "43.68266", + "lon": "-70.36720", + "postcode": "04092" + }, + { + "name": "186", + "lat": "43.68277", + "lon": "-70.36709", + "postcode": "04092" + }, + { + "name": "192", + "lat": "43.68296", + "lon": "-70.36709", + "postcode": "04092" + }, + { + "name": "194", + "lat": "43.68300", + "lon": "-70.36705", + "postcode": "04092" + }, + { + "name": "196", + "lat": "43.68311", + "lon": "-70.36692", + "postcode": "04092" + }, + { + "name": "197", + "lat": "43.68296", + "lon": "-70.36640", + "postcode": "04092" + }, + { + "name": "204", + "lat": "43.68338", + "lon": "-70.36681", + "postcode": "04092" + }, + { + "name": "210", + "lat": "43.68356", + "lon": "-70.36668", + "postcode": "04092" + }, + { + "name": "221", + "lat": "43.68353", + "lon": "-70.36593", + "postcode": "04092" + }, + { + "name": "224", + "lat": "43.68404", + "lon": "-70.36604", + "postcode": "04092" + }, + { + "name": "225", + "lat": "43.68350", + "lon": "-70.36567", + "postcode": "04092" + }, + { + "name": "231", + "lat": "43.68381", + "lon": "-70.36561", + "postcode": "04092" + }, + { + "name": "234", + "lat": "43.68423", + "lon": "-70.36584", + "postcode": "04092" + }, + { + "name": "237", + "lat": "43.68403", + "lon": "-70.36531", + "postcode": "04092" + }, + { + "name": "238", + "lat": "43.68438", + "lon": "-70.36546", + "postcode": "04092" + }, + { + "name": "243", + "lat": "43.68417", + "lon": "-70.36509", + "postcode": "04092" + }, + { + "name": "248", + "lat": "43.68459", + "lon": "-70.36524", + "postcode": "04092" + }, + { + "name": "249", + "lat": "43.68440", + "lon": "-70.36486", + "postcode": "04092" + }, + { + "name": "259", + "lat": "43.68463", + "lon": "-70.36460", + "postcode": "04092" + }, + { + "name": "262", + "lat": "43.68496", + "lon": "-70.36488", + "postcode": "04092" + }, + { + "name": "271", + "lat": "43.68491", + "lon": "-70.36423", + "postcode": "04092" + }, + { + "name": "272", + "lat": "43.68518", + "lon": "-70.36460", + "postcode": "04092" + }, + { + "name": "281", + "lat": "43.68518", + "lon": "-70.36400", + "postcode": "04092" + }, + { + "name": "282", + "lat": "43.68538", + "lon": "-70.36430", + "postcode": "04092" + }, + { + "name": "286", + "lat": "43.68559", + "lon": "-70.36413", + "postcode": "04092" + }, + { + "name": "287", + "lat": "43.68544", + "lon": "-70.36366", + "postcode": "04092" + }, + { + "name": "296", + "lat": "43.68575", + "lon": "-70.36396", + "postcode": "04092" + }, + { + "name": "299", + "lat": "43.68570", + "lon": "-70.36346", + "postcode": "04092" + }, + { + "name": "300", + "lat": "43.68587", + "lon": "-70.36372", + "postcode": "04092" + }, + { + "name": "315", + "lat": "43.68601", + "lon": "-70.36271", + "postcode": "04092" + }, + { + "name": "316", + "lat": "43.68637", + "lon": "-70.36331", + "postcode": "04092" + }, + { + "name": "324", + "lat": "43.68660", + "lon": "-70.36301", + "postcode": "04092" + }, + { + "name": "330", + "lat": "43.68670", + "lon": "-70.36295", + "postcode": "04092" + }, + { + "name": "331", + "lat": "43.68653", + "lon": "-70.36252", + "postcode": "04092" + }, + { + "name": "332", + "lat": "43.68680", + "lon": "-70.36282", + "postcode": "04092" + }, + { + "name": "339", + "lat": "43.68671", + "lon": "-70.36235", + "postcode": "04092" + }, + { + "name": "344", + "lat": "43.68712", + "lon": "-70.36258", + "postcode": "04092" + }, + { + "name": "347", + "lat": "43.68698", + "lon": "-70.36205", + "postcode": "04092" + }, + { + "name": "348", + "lat": "43.68732", + "lon": "-70.36243", + "postcode": "04092" + }, + { + "name": "352", + "lat": "43.68741", + "lon": "-70.36226", + "postcode": "04092" + }, + { + "name": "356", + "lat": "43.68749", + "lon": "-70.36217", + "postcode": "04092" + }, + { + "name": "359", + "lat": "43.68725", + "lon": "-70.36183", + "postcode": "04092" + }, + { + "name": "360", + "lat": "43.68764", + "lon": "-70.36211", + "postcode": "04092" + }, + { + "name": "363", + "lat": "43.68755", + "lon": "-70.36155", + "postcode": "04092" + }, + { + "name": "364", + "lat": "43.68775", + "lon": "-70.36198", + "postcode": "04092" + }, + { + "name": "365", + "lat": "43.68767", + "lon": "-70.36149", + "postcode": "04092" + }, + { + "name": "366", + "lat": "43.68786", + "lon": "-70.36187", + "postcode": "04092" + }, + { + "name": "368", + "lat": "43.68797", + "lon": "-70.36179", + "postcode": "04092" + }, + { + "name": "369", + "lat": "43.68778", + "lon": "-70.36134", + "postcode": "04092" + }, + { + "name": "373", + "lat": "43.68797", + "lon": "-70.36125", + "postcode": "04092" + }, + { + "name": "376", + "lat": "43.68823", + "lon": "-70.36157", + "postcode": "04092" + }, + { + "name": "382", + "lat": "43.68839", + "lon": "-70.36136", + "postcode": "04092" + }, + { + "name": "406", + "lat": "43.68935", + "lon": "-70.36022", + "postcode": "04092" + }, + { + "name": "410", + "lat": "43.69023", + "lon": "-70.36160", + "postcode": "04092" + }, + { + "name": "418", + "lat": "43.68957", + "lon": "-70.35994", + "postcode": "04092" + }, + { + "name": "422", + "lat": "43.68989", + "lon": "-70.35962", + "postcode": "04092" + }, + { + "name": "426", + "lat": "43.69134", + "lon": "-70.36035", + "postcode": "04092" + }, + { + "name": "429", + "lat": "43.69047", + "lon": "-70.35820", + "postcode": "04092" + }, + { + "name": "430", + "lat": "43.69033", + "lon": "-70.35939", + "postcode": "04092" + }, + { + "name": "436", + "lat": "43.69065", + "lon": "-70.35921", + "postcode": "04092" + }, + { + "name": "455", + "lat": "43.69090", + "lon": "-70.35868", + "postcode": "04092" + }, + { + "name": "461", + "lat": "43.69109", + "lon": "-70.35866", + "postcode": "04092" + }, + { + "name": "508", + "lat": "43.69158", + "lon": "-70.35917", + "postcode": "04092" + }, + { + "name": "511", + "lat": "43.69188", + "lon": "-70.35866", + "postcode": "04092" + }, + { + "name": "516", + "lat": "43.69188", + "lon": "-70.35926", + "postcode": "04092" + }, + { + "name": "517", + "lat": "43.69217", + "lon": "-70.35876", + "postcode": "04092" + }, + { + "name": "524", + "lat": "43.69213", + "lon": "-70.35930", + "postcode": "04092" + }, + { + "name": "527", + "lat": "43.69256", + "lon": "-70.35825", + "postcode": "04092" + }, + { + "name": "530", + "lat": "43.69236", + "lon": "-70.35941", + "postcode": "04092" + }, + { + "name": "536", + "lat": "43.69267", + "lon": "-70.35986", + "postcode": "04092" + }, + { + "name": "542", + "lat": "43.69282", + "lon": "-70.35928", + "postcode": "04092" + }, + { + "name": "545", + "lat": "43.69276", + "lon": "-70.35868", + "postcode": "04092" + }, + { + "name": "547", + "lat": "43.69296", + "lon": "-70.35861", + "postcode": "04092" + }, + { + "name": "548", + "lat": "43.69317", + "lon": "-70.35906", + "postcode": "04092" + }, + { + "name": "555", + "lat": "43.69332", + "lon": "-70.35848", + "postcode": "04092" + }, + { + "name": "556", + "lat": "43.69338", + "lon": "-70.35896", + "postcode": "04092" + }, + { + "name": "561", + "lat": "43.69351", + "lon": "-70.35838", + "postcode": "04092" + }, + { + "name": "565", + "lat": "43.69371", + "lon": "-70.35829", + "postcode": "04092" + }, + { + "name": "570", + "lat": "43.69396", + "lon": "-70.35870", + "postcode": "04092" + }, + { + "name": "573", + "lat": "43.69391", + "lon": "-70.35816", + "postcode": "04092" + }, + { + "name": "581", + "lat": "43.69408", + "lon": "-70.35799", + "postcode": "04092" + }, + { + "name": "585", + "lat": "43.69424", + "lon": "-70.35793", + "postcode": "04092" + }, + { + "name": "591", + "lat": "43.69449", + "lon": "-70.35780", + "postcode": "04092" + }, + { + "name": "598", + "lat": "43.69511", + "lon": "-70.35893", + "postcode": "04092" + }, + { + "name": "604", + "lat": "43.69494", + "lon": "-70.35823", + "postcode": "04092" + } + ], + "intersectedStreets": [ + { + "name": "Main Street", + "names": { + "old_name": "State Route 25 (Bus)" + }, + "lat": "43.67692", + "lon": "-70.36775" + }, + { + "name": "Riverbank Footpath", + "lat": "43.67745", + "lon": "-70.36754" + }, + { + "name": "Myrtle Street", + "lat": "43.68516", + "lon": "-70.36430" + }, + { + "name": "Falmouth Street", + "lat": "43.68642", + "lon": "-70.36295" + }, + { + "name": "Everett Street", + "lat": "43.68696", + "lon": "-70.36239" + }, + { + "name": "Beechwood Avenue", + "lat": "43.68752", + "lon": "-70.36187" + }, + { + "name": "Cumberland Street", + "lat": "43.68859", + "lon": "-70.36099" + }, + { + "name": "West Jr High", + "lat": "43.69000", + "lon": "-70.35919" + }, + { + "name": "Graham Road", + "lat": "43.69132", + "lon": "-70.35893" + }, + { + "name": "Lugrin Street", + "lat": "43.69309", + "lon": "-70.35883" + }, + { + "name": "East Bridge Street", + "lat": "43.69517", + "lon": "-70.35778" + }, + { + "name": "Methodist Road", + "lat": "43.69517", + "lon": "-70.35778" + }, + { + "name": "Brown Street", + "lat": "43.67875", + "lon": "-70.36762" + }, + { + "name": "Winslow Street", + "lat": "43.67914", + "lon": "-70.36810" + }, + { + "name": "Lincoln Street", + "lat": "43.68049", + "lon": "-70.36861" + }, + { + "name": "Dodge Street", + "lat": "43.68133", + "lon": "-70.36793" + }, + { + "name": "Mitchell Street", + "lat": "43.68209", + "lon": "-70.36735" + }, + { + "name": "Walker Street", + "lat": "43.68285", + "lon": "-70.36679" + }, + { + "name": "North Street", + "lat": "43.68347", + "lon": "-70.36621" + }, + { + "name": "Pierce Street", + "lat": "43.68347", + "lon": "-70.36621" + }, + { + "name": "King Street", + "lat": "43.68401", + "lon": "-70.36559" + }, + { + "name": "Lyman Street", + "lat": "43.68463", + "lon": "-70.36490" + }, + { + "name": "Dana Court", + "lat": "43.67850", + "lon": "-70.36735" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Newry", + "lat": "44.48769", + "lon": "-70.78766", + "id": 158819677, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street (North Newry)", + "lat": "44.54147", + "lon": "-70.83165", + "id": 17280 + } + ], + "matchStreet": 1 + }, + { + "name": "Livermore Falls", + "lat": "44.47534", + "lon": "-70.18811", + "id": 158910039, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.47405", + "lon": "-70.19068", + "id": 50246, + "buildings": [ + { + "name": "3", + "lat": "44.47405", + "lon": "-70.19068", + "postcode": "04254" + }, + { + "name": "8", + "lat": "44.47359", + "lon": "-70.19077", + "postcode": "04254" + } + ], + "intersectedStreets": [ + { + "name": "Federal Road", + "lat": "44.47310", + "lon": "-70.19156" + }, + { + "name": "Water Street", + "lat": "44.47331", + "lon": "-70.19141" + }, + { + "name": "Main Street", + "lat": "44.47402", + "lon": "-70.19019" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Howland", + "lat": "45.23867", + "lon": "-68.66364", + "id": 158835521, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.23728", + "lon": "-68.65758", + "id": 45703 + } + ], + "matchStreet": 1 + }, + { + "name": "Bangor", + "enName": "Bangor", + "names": { + "ru": "Бангор", + "uk": "Бангор", + "he": "בנגור" + }, + "lat": "44.80118", + "lon": "-68.77781", + "id": 158862401, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Lane", + "lat": "44.81055", + "lon": "-68.91543", + "id": 3668 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Fort Fairfield", + "lat": "46.76983", + "lon": "-67.83457", + "id": 158826319, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "46.77297", + "lon": "-67.83513", + "id": 122576 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Bath", + "lat": "43.91076", + "lon": "-69.82086", + "id": 158843471, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.87553", + "lon": "-69.82548", + "id": 105727, + "buildings": [ + { + "name": "7", + "lat": "43.87553", + "lon": "-69.82548", + "postcode": "04530" + }, + { + "name": "8", + "lat": "43.87595", + "lon": "-69.82487", + "postcode": "04530" + }, + { + "name": "10", + "lat": "43.87630", + "lon": "-69.82479", + "postcode": "04530" + } + ], + "intersectedStreets": [ + { + "name": "High Street", + "lat": "43.87647", + "lon": "-69.82545" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Richmond", + "lat": "44.08730", + "lon": "-69.79893", + "id": 158844495, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.09249", + "lon": "-69.79715", + "id": 76629, + "buildings": [ + { + "name": "3", + "lat": "44.09101", + "lon": "-69.79659", + "postcode": "04357" + }, + { + "name": "5", + "lat": "44.09116", + "lon": "-69.79676", + "postcode": "04357" + }, + { + "name": "10", + "lat": "44.09125", + "lon": "-69.79737", + "postcode": "04357" + }, + { + "name": "11", + "lat": "44.09150", + "lon": "-69.79698", + "postcode": "04357" + }, + { + "name": "20", + "lat": "44.09255", + "lon": "-69.79842", + "postcode": "04357" + }, + { + "name": "21", + "lat": "44.09188", + "lon": "-69.79743", + "postcode": "04357" + }, + { + "name": "26", + "lat": "44.09249", + "lon": "-69.79715", + "postcode": "04357" + } + ], + "intersectedStreets": [ + { + "name": "North Front Street", + "lat": "44.09027", + "lon": "-69.79625" + }, + { + "name": "Arch Street", + "lat": "44.09093", + "lon": "-69.79683" + }, + { + "name": "Hill Street", + "lat": "44.09159", + "lon": "-69.79754" + }, + { + "name": "Hillside Street", + "lat": "44.09204", + "lon": "-69.79792" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Presque Isle", + "enName": "Presque Isle", + "names": { + "ru": "Преск-Айл", + "uk": "Преск-Айл" + }, + "lat": "46.68148", + "lon": "-68.01636", + "id": 158814029, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Gorham", + "lat": "43.67969", + "lon": "-70.44293", + "id": 158860614, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "East Millinocket", + "lat": "45.62755", + "lon": "-68.57448", + "id": 158856521, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Lewiston", + "lat": "44.10035", + "lon": "-70.21478", + "id": 158821172, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.10392", + "lon": "-70.21916", + "id": 115087, + "intersectedStreets": [ + { + "name": "EAST COAST GREENWAY", + "lat": "44.10350", + "lon": "-70.21832" + }, + { + "name": "Spring Street", + "lat": "44.10355", + "lon": "-70.21837" + }, + { + "name": "Summer Street", + "lat": "44.10392", + "lon": "-70.21916" + }, + { + "name": "Winter Street", + "lat": "44.10438", + "lon": "-70.21987" + }, + { + "name": "Hammond Street", + "lat": "44.10264", + "lon": "-70.21620" + }, + { + "name": "High Street", + "lat": "44.10264", + "lon": "-70.21620" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Milbridge", + "lat": "44.53535", + "lon": "-67.88117", + "id": 158816308, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.54060", + "lon": "-67.88197", + "id": 144065 + } + ], + "matchStreet": 1 + }, + { + "name": "Old Town", + "lat": "44.93467", + "lon": "-68.64533", + "id": 158842929, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.94519", + "lon": "-68.65249", + "id": 78681 + } + ], + "matchStreet": 1 + }, + { + "name": "Topsham", + "lat": "43.92758", + "lon": "-69.97588", + "id": 158868530, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.92176", + "lon": "-69.97308", + "id": 89197, + "buildings": [ + { + "name": "5", + "lat": "43.91709", + "lon": "-69.97544", + "postcode": "04086" + }, + { + "name": "7", + "lat": "43.91745", + "lon": "-69.97536", + "postcode": "04086" + }, + { + "name": "9", + "lat": "43.91796", + "lon": "-69.97461", + "postcode": "04086" + }, + { + "name": "11", + "lat": "43.91811", + "lon": "-69.97426", + "postcode": "04086" + }, + { + "name": "15", + "lat": "43.91827", + "lon": "-69.97401", + "postcode": "04086" + }, + { + "name": "19", + "lat": "43.91867", + "lon": "-69.97390", + "postcode": "04086" + }, + { + "name": "21", + "lat": "43.91893", + "lon": "-69.97379", + "postcode": "04086" + }, + { + "name": "22", + "lat": "43.91952", + "lon": "-69.97313", + "postcode": "04086" + }, + { + "name": "23", + "lat": "43.91913", + "lon": "-69.97364", + "postcode": "04086" + }, + { + "name": "25", + "lat": "43.91927", + "lon": "-69.97364", + "postcode": "04086" + }, + { + "name": "29", + "lat": "43.91981", + "lon": "-69.97360", + "postcode": "04086" + }, + { + "name": "30", + "lat": "43.92008", + "lon": "-69.97295", + "postcode": "04086" + }, + { + "name": "31", + "lat": "43.92003", + "lon": "-69.97355", + "postcode": "04086" + }, + { + "name": "32", + "lat": "43.92023", + "lon": "-69.97289", + "postcode": "04086" + }, + { + "name": "33", + "lat": "43.92049", + "lon": "-69.97340", + "postcode": "04086" + }, + { + "name": "34", + "lat": "43.92043", + "lon": "-69.97289", + "postcode": "04086" + }, + { + "name": "35", + "lat": "43.92062", + "lon": "-69.97334", + "postcode": "04086" + }, + { + "name": "38", + "lat": "43.92079", + "lon": "-69.97272", + "postcode": "04086" + }, + { + "name": "39", + "lat": "43.92100", + "lon": "-69.97328", + "postcode": "04086" + }, + { + "name": "41", + "lat": "43.92116", + "lon": "-69.97323", + "postcode": "04086" + }, + { + "name": "42", + "lat": "43.92111", + "lon": "-69.97270", + "postcode": "04086" + }, + { + "name": "43", + "lat": "43.92147", + "lon": "-69.97353", + "postcode": "04086" + }, + { + "name": "44", + "lat": "43.92127", + "lon": "-69.97259", + "postcode": "04086" + }, + { + "name": "47", + "lat": "43.92176", + "lon": "-69.97308", + "postcode": "04086" + }, + { + "name": "49", + "lat": "43.92198", + "lon": "-69.97304", + "postcode": "04086" + }, + { + "name": "50", + "lat": "43.92193", + "lon": "-69.97259", + "postcode": "04086" + }, + { + "name": "51", + "lat": "43.92233", + "lon": "-69.97317", + "postcode": "04086" + }, + { + "name": "52", + "lat": "43.92227", + "lon": "-69.97252", + "postcode": "04086" + }, + { + "name": "53", + "lat": "43.92284", + "lon": "-69.97295", + "postcode": "04086" + }, + { + "name": "56", + "lat": "43.92272", + "lon": "-69.97229", + "postcode": "04086" + }, + { + "name": "58", + "lat": "43.92303", + "lon": "-69.97229", + "postcode": "04086" + }, + { + "name": "62", + "lat": "43.92334", + "lon": "-69.97216", + "postcode": "04086" + }, + { + "name": "63", + "lat": "43.92340", + "lon": "-69.97272", + "postcode": "04086" + }, + { + "name": "64", + "lat": "43.92354", + "lon": "-69.97214", + "postcode": "04086" + }, + { + "name": "67", + "lat": "43.92389", + "lon": "-69.97259", + "postcode": "04086" + }, + { + "name": "72", + "lat": "43.92440", + "lon": "-69.97192", + "postcode": "04086" + }, + { + "name": "73", + "lat": "43.92467", + "lon": "-69.97242", + "postcode": "04086" + }, + { + "name": "76", + "lat": "43.92485", + "lon": "-69.97188", + "postcode": "04086" + }, + { + "name": "77", + "lat": "43.92501", + "lon": "-69.97235", + "postcode": "04086" + }, + { + "name": "78", + "lat": "43.92502", + "lon": "-69.97173", + "postcode": "04086" + }, + { + "name": "79", + "lat": "43.92521", + "lon": "-69.97222", + "postcode": "04086" + }, + { + "name": "80", + "lat": "43.92519", + "lon": "-69.97173", + "postcode": "04086" + }, + { + "name": "83", + "lat": "43.92578", + "lon": "-69.97210", + "postcode": "04086" + }, + { + "name": "84", + "lat": "43.92572", + "lon": "-69.97162", + "postcode": "04086" + }, + { + "name": "86", + "lat": "43.92595", + "lon": "-69.97160", + "postcode": "04086" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Fairfield", + "lat": "44.58851", + "lon": "-69.59908", + "id": 158862392, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.58773", + "lon": "-69.59457", + "id": 144847 + } + ], + "matchStreet": 1 + }, + { + "name": "Auburn", + "lat": "44.09785", + "lon": "-70.23117", + "id": 158855461, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Newfield", + "lat": "43.64850", + "lon": "-70.84740", + "id": 158816037, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.64808", + "lon": "-70.84744", + "id": 9994, + "buildings": [ + { + "name": "8", + "lat": "43.62721", + "lon": "-70.84002", + "postcode": "04095" + }, + { + "name": "44", + "lat": "43.62862", + "lon": "-70.83956", + "postcode": "04095" + }, + { + "name": "54", + "lat": "43.62902", + "lon": "-70.84004", + "postcode": "04095" + }, + { + "name": "58", + "lat": "43.62960", + "lon": "-70.84079", + "postcode": "04095" + }, + { + "name": "132", + "lat": "43.63325", + "lon": "-70.84162", + "postcode": "04095" + }, + { + "name": "134", + "lat": "43.63379", + "lon": "-70.84203", + "postcode": "04095" + }, + { + "name": "136", + "lat": "43.63418", + "lon": "-70.84225", + "postcode": "04095" + }, + { + "name": "137", + "lat": "43.63430", + "lon": "-70.84141", + "postcode": "04095" + }, + { + "name": "161", + "lat": "43.63572", + "lon": "-70.84208", + "postcode": "04095" + }, + { + "name": "167", + "lat": "43.63621", + "lon": "-70.84156", + "postcode": "04095" + }, + { + "name": "177", + "lat": "43.63676", + "lon": "-70.84199", + "postcode": "04095" + }, + { + "name": "187", + "lat": "43.63718", + "lon": "-70.84265", + "postcode": "04095" + }, + { + "name": "193", + "lat": "43.63795", + "lon": "-70.84304", + "postcode": "04095" + }, + { + "name": "210", + "lat": "43.63836", + "lon": "-70.84532", + "postcode": "04095" + }, + { + "name": "223", + "lat": "43.63996", + "lon": "-70.84349", + "postcode": "04095" + }, + { + "name": "226", + "lat": "43.63923", + "lon": "-70.84574", + "postcode": "04095" + }, + { + "name": "231", + "lat": "43.64007", + "lon": "-70.84238", + "postcode": "04095" + }, + { + "name": "238", + "lat": "43.64063", + "lon": "-70.84493", + "postcode": "04095" + }, + { + "name": "247", + "lat": "43.64126", + "lon": "-70.84403", + "postcode": "04095" + }, + { + "name": "253", + "lat": "43.64177", + "lon": "-70.84433", + "postcode": "04095" + }, + { + "name": "267", + "lat": "43.64258", + "lon": "-70.84435", + "postcode": "04095" + }, + { + "name": "274", + "lat": "43.64337", + "lon": "-70.84514", + "postcode": "04095" + }, + { + "name": "275", + "lat": "43.64350", + "lon": "-70.84411", + "postcode": "04095" + }, + { + "name": "293", + "lat": "43.64423", + "lon": "-70.84368", + "postcode": "04095" + }, + { + "name": "305", + "lat": "43.64542", + "lon": "-70.84433", + "postcode": "04095" + }, + { + "name": "311", + "lat": "43.64575", + "lon": "-70.84478", + "postcode": "04095" + }, + { + "name": "320", + "lat": "43.64573", + "lon": "-70.84607", + "postcode": "04095" + }, + { + "name": "333", + "lat": "43.64663", + "lon": "-70.84615", + "postcode": "04095" + }, + { + "name": "340", + "lat": "43.64684", + "lon": "-70.84731", + "postcode": "04095" + }, + { + "name": "341", + "lat": "43.64704", + "lon": "-70.84667", + "postcode": "04095" + }, + { + "name": "357", + "lat": "43.64808", + "lon": "-70.84744", + "postcode": "04095" + }, + { + "name": "358", + "lat": "43.64799", + "lon": "-70.84791", + "postcode": "04095" + }, + { + "name": "360", + "lat": "43.64825", + "lon": "-70.84804", + "postcode": "04095" + } + ], + "intersectedStreets": [ + { + "name": "Water Street", + "lat": "43.64845", + "lon": "-70.84778" + }, + { + "name": "North Shore Road (Sprague City)", + "lat": "43.62539", + "lon": "-70.83875" + }, + { + "name": "Poverty Pond Road", + "lat": "43.63281", + "lon": "-70.84098" + }, + { + "name": "Carroll Pit Road", + "lat": "43.64457", + "lon": "-70.84439" + }, + { + "name": "Tuttle Lane", + "lat": "43.64640", + "lon": "-70.84643" + }, + { + "name": "Pickett Mtn Road", + "lat": "43.64640", + "lon": "-70.84643" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Lincoln", + "lat": "45.36224", + "lon": "-68.50472", + "id": 158802992, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.43055", + "lon": "-68.45733", + "id": 86634 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Yarmouth", + "lat": "43.80064", + "lon": "-70.18672", + "id": 158803248, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.80009", + "lon": "-70.18345", + "id": 99270, + "buildings": [ + { + "name": "8", + "lat": "43.79985", + "lon": "-70.18356", + "postcode": "04096" + }, + { + "name": "17", + "lat": "43.79975", + "lon": "-70.18283", + "postcode": "04096" + }, + { + "name": "18", + "lat": "43.80009", + "lon": "-70.18345", + "postcode": "04096" + }, + { + "name": "20", + "lat": "43.80019", + "lon": "-70.18339", + "postcode": "04096" + }, + { + "name": "21", + "lat": "43.80000", + "lon": "-70.18292", + "postcode": "04096" + }, + { + "name": "23", + "lat": "43.80003", + "lon": "-70.18287", + "postcode": "04096" + }, + { + "name": "25", + "lat": "43.80006", + "lon": "-70.18283", + "postcode": "04096" + }, + { + "name": "28", + "lat": "43.80037", + "lon": "-70.18300", + "postcode": "04096" + }, + { + "name": "31", + "lat": "43.80028", + "lon": "-70.18255", + "postcode": "04096" + }, + { + "name": "38", + "lat": "43.80064", + "lon": "-70.18270", + "postcode": "04096" + }, + { + "name": "43", + "lat": "43.80062", + "lon": "-70.18221", + "postcode": "04096" + }, + { + "name": "49", + "lat": "43.80070", + "lon": "-70.18146", + "postcode": "04096" + }, + { + "name": "51", + "lat": "43.80071", + "lon": "-70.18118", + "postcode": "04096" + }, + { + "name": "80", + "lat": "43.80170", + "lon": "-70.18142", + "postcode": "04096" + }, + { + "name": "81", + "lat": "43.80149", + "lon": "-70.18105", + "postcode": "04096" + }, + { + "name": "89", + "lat": "43.80180", + "lon": "-70.18079", + "postcode": "04096" + }, + { + "name": "100", + "lat": "43.80221", + "lon": "-70.18096", + "postcode": "04096" + }, + { + "name": "103", + "lat": "43.80181", + "lon": "-70.17974", + "postcode": "04096" + }, + { + "name": "107", + "lat": "43.80209", + "lon": "-70.17972", + "postcode": "04096" + }, + { + "name": "109", + "lat": "43.80232", + "lon": "-70.18000", + "postcode": "04096" + }, + { + "name": "110", + "lat": "43.80260", + "lon": "-70.18062", + "postcode": "04096" + }, + { + "name": "124", + "lat": "43.80280", + "lon": "-70.18013", + "postcode": "04096" + }, + { + "name": "125", + "lat": "43.80259", + "lon": "-70.17940", + "postcode": "04096" + }, + { + "name": "132", + "lat": "43.80305", + "lon": "-70.17974", + "postcode": "04096" + }, + { + "name": "137", + "lat": "43.80294", + "lon": "-70.17918", + "postcode": "04096" + } + ], + "intersectedStreets": [ + { + "name": "Main Street", + "lat": "43.79941", + "lon": "-70.18367" + }, + { + "name": "Willow Street", + "lat": "43.80342", + "lon": "-70.17893" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Sangerville", + "lat": "45.16478", + "lon": "-69.35644", + "id": 158806316, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.16971", + "lon": "-69.36081", + "id": 139808 + } + ], + "matchStreet": 1 + }, + { + "name": "Fort Kent", + "lat": "47.25873", + "lon": "-68.58971", + "id": 158842923, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "47.24309", + "lon": "-68.58011", + "id": 93959 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Gilead", + "lat": "44.39454", + "lon": "-70.97305", + "id": 158842409, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.39494", + "lon": "-70.97314", + "id": 22840, + "buildings": [ + { + "name": "6", + "lat": "44.39445", + "lon": "-70.97299", + "postcode": "04217" + }, + { + "name": "8", + "lat": "44.39459", + "lon": "-70.97301", + "postcode": "04217" + }, + { + "name": "12", + "lat": "44.39494", + "lon": "-70.97314", + "postcode": "04217" + }, + { + "name": "15", + "lat": "44.39520", + "lon": "-70.97275", + "postcode": "04217" + }, + { + "name": "20", + "lat": "44.39552", + "lon": "-70.97288", + "postcode": "04217" + }, + { + "name": "26", + "lat": "44.39598", + "lon": "-70.97282", + "postcode": "04217" + }, + { + "name": "30", + "lat": "44.39624", + "lon": "-70.97247", + "postcode": "04217" + } + ], + "intersectedStreets": [ + { + "name": "Depot Street", + "lat": "44.39440", + "lon": "-70.97286" + }, + { + "name": "Fire Lane 100", + "lat": "44.39617", + "lon": "-70.97243" + }, + { + "name": "North Road", + "names": { + "alt_name": "North Side Road" + }, + "lat": "44.39873", + "lon": "-70.97172" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Van Buren", + "lat": "47.15751", + "lon": "-67.93533", + "id": 158909978, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "47.15786", + "lon": "-67.93467", + "id": 18084 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "North Brooksville", + "lat": "44.39535", + "lon": "-68.71058", + "id": 158908703, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "44.39531", + "lon": "-68.71047", + "id": 56244 + } + ], + "matchStreet": 1 + }, + { + "name": "Grand Falls", + "enName": "Grand Falls", + "names": { + "fr": "Grand-Sault" + }, + "lat": "47.04670", + "lon": "-67.77684", + "id": 1097017, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "North Dexter", + "lat": "45.07617", + "lon": "-69.33421", + "id": 158859281, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.08243", + "lon": "-69.39289", + "id": 139807 + } + ], + "matchStreet": 1 + }, + { + "name": "Belfast", + "lat": "44.42612", + "lon": "-69.00674", + "id": 158823967, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.42810", + "lon": "-69.00972", + "id": 85919 + } + ], + "matchStreet": 1 + }, + { + "name": "Sprague City", + "lat": "43.62625", + "lon": "-70.83923", + "id": 158853406, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.62719", + "lon": "-70.83999", + "id": 10409, + "buildings": [ + { + "name": "8", + "lat": "43.62719", + "lon": "-70.83999", + "postcode": "04095" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Calais", + "lat": "45.18903", + "lon": "-67.27814", + "id": 5964911273, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "North Waterford", + "lat": "44.23174", + "lon": "-70.76868", + "id": 158814982, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "44.20966", + "lon": "-70.81047", + "id": 31314, + "buildings": [ + { + "name": "11", + "lat": "44.21193", + "lon": "-70.80860", + "postcode": "04088" + }, + { + "name": "20", + "lat": "44.21136", + "lon": "-70.80886", + "postcode": "04088" + }, + { + "name": "26", + "lat": "44.21100", + "lon": "-70.80909", + "postcode": "04088" + }, + { + "name": "32", + "lat": "44.21070", + "lon": "-70.80959", + "postcode": "04088" + }, + { + "name": "52", + "lat": "44.20966", + "lon": "-70.81047", + "postcode": "04088" + } + ], + "intersectedStreets": [ + { + "name": "Button Bend", + "lat": "44.21110", + "lon": "-70.80899" + }, + { + "name": "Point Road", + "lat": "44.21156", + "lon": "-70.80860" + }, + { + "name": "Five Kezar Ponds Road", + "lat": "44.21246", + "lon": "-70.80787" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Saint-Léonard", + "lat": "47.16520", + "lon": "-67.92447", + "id": 34705955, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Edgecomb", + "lat": "43.95841", + "lon": "-69.63060", + "id": 158915597, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "43.97111", + "lon": "-69.67169", + "id": 112282, + "buildings": [ + { + "name": "21", + "lat": "43.97111", + "lon": "-69.67169", + "postcode": "04578" + }, + { + "name": "51", + "lat": "43.96942", + "lon": "-69.67192", + "postcode": "04578" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Bar Harbor", + "lat": "44.39121", + "lon": "-68.20073", + "id": 4307278286, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.39054", + "lon": "-68.20971", + "id": 125419 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Norridgewock", + "lat": "44.71307", + "lon": "-69.79065", + "id": 158821634, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.71423", + "lon": "-69.79737", + "id": 50348 + } + ], + "matchStreet": 1 + }, + { + "name": "Saint-Leonard", + "lat": "47.16390", + "lon": "-67.92423", + "id": 1099568, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Boothbay Harbor", + "lat": "43.85227", + "lon": "-69.62809", + "id": 158857975, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.85180", + "lon": "-69.62710", + "id": 96905, + "buildings": [ + { + "name": "3", + "lat": "43.85174", + "lon": "-69.62751", + "postcode": "04538" + }, + { + "name": "4", + "lat": "43.85188", + "lon": "-69.62755", + "postcode": "04538" + }, + { + "name": "6", + "lat": "43.85186", + "lon": "-69.62746", + "postcode": "04538" + }, + { + "name": "8", + "lat": "43.85184", + "lon": "-69.62740", + "postcode": "04538" + }, + { + "name": "10", + "lat": "43.85183", + "lon": "-69.62734", + "postcode": "04538" + }, + { + "name": "11", + "lat": "43.85166", + "lon": "-69.62718", + "postcode": "04538" + }, + { + "name": "12", + "lat": "43.85180", + "lon": "-69.62710", + "postcode": "04538" + } + ], + "intersectedStreets": [ + { + "name": "Townsend Avenue", + "lat": "43.85188", + "lon": "-69.62774" + }, + { + "name": "By-Way", + "lat": "43.85174", + "lon": "-69.62740" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "West Farmington", + "lat": "44.66284", + "lon": "-70.15534", + "id": 158826737, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.66247", + "lon": "-70.15350", + "id": 148813 + } + ], + "matchStreet": 1 + }, + { + "name": "Waldo", + "lat": "44.51257", + "lon": "-69.07615", + "id": 158816768, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street (Belfast)", + "lat": "44.42808", + "lon": "-69.00972", + "id": 85920 + } + ], + "matchStreet": 1 + }, + { + "name": "Rockwood", + "lat": "45.67782", + "lon": "-69.74089", + "id": 158835199, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.68730", + "lon": "-69.78050", + "id": 145420 + } + ], + "matchStreet": 1 + }, + { + "name": "Hampden", + "lat": "44.74452", + "lon": "-68.83698", + "id": 158862067, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Westbrook Terrace", + "lat": "44.75271", + "lon": "-68.82847", + "id": 137974 + } + ], + "init": 1 + }, + { + "name": "Brunswick", + "lat": "43.91452", + "lon": "-69.96533", + "id": 158864618, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.91858", + "lon": "-69.97362", + "id": 138895, + "intersectedStreets": [ + { + "name": "Front Street", + "lat": "43.91695", + "lon": "-69.97538" + }, + { + "name": "Prospect Street", + "lat": "43.91734", + "lon": "-69.97495" + }, + { + "name": "Union Street", + "lat": "43.91841", + "lon": "-69.97366" + }, + { + "name": "Oak Street", + "lat": "43.92124", + "lon": "-69.97302" + }, + { + "name": "Maple Street (Topsham)", + "lat": "43.92209", + "lon": "-69.97278" + }, + { + "name": "Maple Street Extension", + "lat": "43.92209", + "lon": "-69.97278" + }, + { + "name": "Walnut Street (Topsham)", + "lat": "43.92368", + "lon": "-69.97242" + }, + { + "name": "Winter Street (Topsham)", + "lat": "43.92638", + "lon": "-69.97169" + } + ] + }, + { + "name": "Bridge Road", + "lat": "43.93465", + "lon": "-69.86912", + "id": 102481, + "buildings": [ + { + "name": "14", + "lat": "43.93408", + "lon": "-69.86719", + "postcode": "04011" + }, + { + "name": "15", + "lat": "43.93465", + "lon": "-69.86912", + "postcode": "04011" + }, + { + "name": "26", + "lat": "43.93471", + "lon": "-69.86740", + "postcode": "04011" + }, + { + "name": "36", + "lat": "43.93531", + "lon": "-69.86708", + "postcode": "04011" + }, + { + "name": "38", + "lat": "43.93669", + "lon": "-69.86457", + "postcode": "04011" + }, + { + "name": "40", + "lat": "43.93626", + "lon": "-69.86558", + "postcode": "04011" + }, + { + "name": "57", + "lat": "43.93695", + "lon": "-69.86785", + "postcode": "04011" + }, + { + "name": "73", + "lat": "43.93816", + "lon": "-69.86721", + "postcode": "04011" + }, + { + "name": "83", + "lat": "43.93888", + "lon": "-69.86695", + "postcode": "04011" + }, + { + "name": "110", + "lat": "43.93992", + "lon": "-69.86442", + "postcode": "04011" + }, + { + "name": "121", + "lat": "43.94095", + "lon": "-69.86481", + "postcode": "04011" + }, + { + "name": "128", + "lat": "43.94097", + "lon": "-69.86391", + "postcode": "04011" + }, + { + "name": "131", + "lat": "43.94137", + "lon": "-69.86444", + "postcode": "04011" + }, + { + "name": "140", + "lat": "43.94159", + "lon": "-69.86318", + "postcode": "04011" + }, + { + "name": "156", + "lat": "43.94236", + "lon": "-69.86221", + "postcode": "04011" + }, + { + "name": "171", + "lat": "43.94344", + "lon": "-69.86230", + "postcode": "04011" + }, + { + "name": "172", + "lat": "43.94315", + "lon": "-69.86163", + "postcode": "04011" + }, + { + "name": "190", + "lat": "43.94367", + "lon": "-69.86088", + "postcode": "04011" + }, + { + "name": "196", + "lat": "43.94401", + "lon": "-69.86002", + "postcode": "04011" + }, + { + "name": "204", + "lat": "43.94451", + "lon": "-69.85985", + "postcode": "04011" + }, + { + "name": "218", + "lat": "43.94539", + "lon": "-69.85901", + "postcode": "04011" + } + ], + "intersectedStreets": [ + { + "name": "Eagle Brook Lane", + "lat": "43.93499", + "lon": "-69.86764" + }, + { + "name": "Old Bath Road", + "lat": "43.93315", + "lon": "-69.86824" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Edmundston", + "enName": "Edmundston", + "names": { + "ru": "Эдмундстон", + "uk": "Едмундстон" + }, + "lat": "47.36441", + "lon": "-68.32809", + "id": 34699332, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "47.36144", + "lon": "-68.32859", + "id": 113235 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "York", + "lat": "43.15210", + "lon": "-70.64932", + "id": 6357513599, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Biddeford", + "lat": "43.49258", + "lon": "-70.45338", + "id": 158859755, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "43.44072", + "lon": "-70.37863", + "id": 19069, + "buildings": [ + { + "name": "7", + "lat": "43.44072", + "lon": "-70.37863", + "postcode": "04005" + }, + { + "name": "9", + "lat": "43.44033", + "lon": "-70.37797", + "postcode": "04005" + }, + { + "name": "12", + "lat": "43.43932", + "lon": "-70.37737", + "postcode": "04005" + }, + { + "name": "15", + "lat": "43.44005", + "lon": "-70.37715", + "postcode": "04005" + }, + { + "name": "16", + "lat": "43.43866", + "lon": "-70.37722", + "postcode": "04005" + }, + { + "name": "17", + "lat": "43.43972", + "lon": "-70.37619", + "postcode": "04005" + }, + { + "name": "19", + "lat": "43.43955", + "lon": "-70.37586", + "postcode": "04005" + }, + { + "name": "31", + "lat": "43.43977", + "lon": "-70.37286", + "postcode": "04005" + }, + { + "name": "35", + "lat": "43.43971", + "lon": "-70.37230", + "postcode": "04005" + }, + { + "name": "37", + "lat": "43.43863", + "lon": "-70.37277", + "postcode": "04005" + }, + { + "name": "39", + "lat": "43.43846", + "lon": "-70.37258", + "postcode": "04005" + }, + { + "name": "41", + "lat": "43.43834", + "lon": "-70.37247", + "postcode": "04005" + }, + { + "name": "51", + "lat": "43.43764", + "lon": "-70.37179", + "postcode": "04005" + }, + { + "name": "58", + "lat": "43.43722", + "lon": "-70.37166", + "postcode": "04005" + }, + { + "name": "69", + "lat": "43.43739", + "lon": "-70.37106", + "postcode": "04005" + }, + { + "name": "73", + "lat": "43.43712", + "lon": "-70.37024" + } + ], + "intersectedStreets": [ + { + "name": "Pool Street", + "names": { + "alt_name": "State Route 208" + }, + "lat": "43.44134", + "lon": "-70.38084" + }, + { + "name": "Winter Harbor Lane", + "lat": "43.43898", + "lon": "-70.37518" + }, + { + "name": "Leighton Point Lane", + "lat": "43.43736", + "lon": "-70.37151" + }, + { + "name": "Beach Avenue", + "lat": "43.43669", + "lon": "-70.36958" + }, + { + "name": "Mile Stretch Road", + "lat": "43.43669", + "lon": "-70.36958" + }, + { + "name": "Fortunes Rocks Road", + "lat": "43.43669", + "lon": "-70.36958" + }, + { + "name": "Old Pool Road", + "lat": "43.44060", + "lon": "-70.37956" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Parkman", + "lat": "45.13367", + "lon": "-69.43310", + "id": 158821862, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.08593", + "lon": "-69.39647", + "id": 68103 + }, + { + "name": "Bridge Road", + "lat": "45.07719", + "lon": "-69.39072", + "id": 70183 + } + ], + "matchStreet": 1 + }, + { + "name": "Anson", + "lat": "44.79840", + "lon": "-69.88953", + "id": 158816752, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.79782", + "lon": "-69.89204", + "id": 144849 + } + ], + "matchStreet": 1 + }, + { + "name": "Randolph", + "lat": "44.23035", + "lon": "-69.76671", + "id": 158806509, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.23315", + "lon": "-69.76818", + "id": 150807, + "intersectedStreets": [ + { + "name": "Water Street", + "lat": "44.23313", + "lon": "-69.76782" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Benton Station", + "lat": "44.58923", + "lon": "-69.58505", + "id": 158818539, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.58686", + "lon": "-69.58768", + "id": 125640 + } + ], + "matchStreet": 1 + }, + { + "name": "Berwick", + "lat": "43.27259", + "lon": "-70.86732", + "id": 158846698, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.26688", + "lon": "-70.86630", + "id": 97194, + "buildings": [ + { + "name": "1", + "lat": "43.26621", + "lon": "-70.86619", + "postcode": "03901" + }, + { + "name": "2", + "lat": "43.26646", + "lon": "-70.86583", + "postcode": "03901" + }, + { + "name": "3", + "lat": "43.26611", + "lon": "-70.86714", + "postcode": "03901" + }, + { + "name": "4", + "lat": "43.26660", + "lon": "-70.86602", + "postcode": "03901" + }, + { + "name": "8", + "lat": "43.26688", + "lon": "-70.86630", + "postcode": "03901" + }, + { + "name": "11", + "lat": "43.26683", + "lon": "-70.86679", + "postcode": "03901" + }, + { + "name": "12", + "lat": "43.26707", + "lon": "-70.86652", + "postcode": "03901" + }, + { + "name": "12 R", + "lat": "43.26708", + "lon": "-70.86652", + "postcode": "03901" + }, + { + "name": "15", + "lat": "43.26702", + "lon": "-70.86705", + "postcode": "03901" + }, + { + "name": "16", + "lat": "43.26741", + "lon": "-70.86686", + "postcode": "03901" + }, + { + "name": "17", + "lat": "43.26710", + "lon": "-70.86716", + "postcode": "03901" + }, + { + "name": "19", + "lat": "43.26733", + "lon": "-70.86733", + "postcode": "03901" + }, + { + "name": "20", + "lat": "43.26752", + "lon": "-70.86705", + "postcode": "03901" + }, + { + "name": "27", + "lat": "43.26768", + "lon": "-70.86780", + "postcode": "03901" + }, + { + "name": "31", + "lat": "43.26789", + "lon": "-70.86808", + "postcode": "03901" + }, + { + "name": "35", + "lat": "43.26810", + "lon": "-70.86832", + "postcode": "03901" + }, + { + "name": "40", + "lat": "43.26855", + "lon": "-70.86815", + "postcode": "03901" + }, + { + "name": "41", + "lat": "43.26843", + "lon": "-70.86864", + "postcode": "03901" + }, + { + "name": "42", + "lat": "43.26868", + "lon": "-70.86836", + "postcode": "03901" + }, + { + "name": "44", + "lat": "43.26880", + "lon": "-70.86851", + "postcode": "03901" + }, + { + "name": "45", + "lat": "43.26868", + "lon": "-70.86888", + "postcode": "03901" + }, + { + "name": "51", + "lat": "43.26893", + "lon": "-70.86931", + "postcode": "03901" + }, + { + "name": "53", + "lat": "43.26910", + "lon": "-70.86943", + "postcode": "03901" + }, + { + "name": "57", + "lat": "43.26921", + "lon": "-70.86954", + "postcode": "03901" + }, + { + "name": "59", + "lat": "43.26935", + "lon": "-70.86967", + "postcode": "03901" + }, + { + "name": "63", + "lat": "43.26950", + "lon": "-70.86991", + "postcode": "03901" + }, + { + "name": "64", + "lat": "43.26971", + "lon": "-70.86969", + "postcode": "03901" + }, + { + "name": "65", + "lat": "43.26964", + "lon": "-70.87003", + "postcode": "03901" + }, + { + "name": "69", + "lat": "43.26977", + "lon": "-70.87021", + "postcode": "03901" + }, + { + "name": "71", + "lat": "43.26991", + "lon": "-70.87040", + "postcode": "03901" + }, + { + "name": "79", + "lat": "43.27011", + "lon": "-70.87061", + "postcode": "03901" + } + ], + "intersectedStreets": [ + { + "name": "Bow Street", + "lat": "43.26627", + "lon": "-70.86589" + }, + { + "name": "Penny Lane", + "lat": "43.26685", + "lon": "-70.86656" + }, + { + "name": "River Street", + "lat": "43.26830", + "lon": "-70.86823" + }, + { + "name": "Charles Street", + "lat": "43.26949", + "lon": "-70.86965" + }, + { + "name": "Rochester Street", + "lat": "43.27016", + "lon": "-70.87034" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Brooksville", + "lat": "44.34693", + "lon": "-68.68378", + "id": 158853354, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road (North Brooksville)", + "lat": "44.39531", + "lon": "-68.71047", + "id": 56243 + } + ], + "matchStreet": 1 + }, + { + "name": "Kennebunk", + "lat": "43.38409", + "lon": "-70.54527", + "id": 158807785, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Winslow", + "lat": "44.54742", + "lon": "-69.62174", + "id": 158843866, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.54731", + "lon": "-69.62669", + "id": 76220 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Washburn", + "lat": "46.79019", + "lon": "-68.15781", + "id": 158800583, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "46.79089", + "lon": "-68.15839", + "id": 122574 + } + ], + "matchStreet": 1 + }, + { + "name": "Carrabassett", + "lat": "45.07783", + "lon": "-70.21201", + "id": 158839238, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street (Bigelow)", + "lat": "45.07314", + "lon": "-70.31048", + "id": 107622 + } + ], + "matchStreet": 1 + }, + { + "name": "Sanford", + "lat": "43.43887", + "lon": "-70.77419", + "id": 158837189, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Street (Springvale)", + "names": { + "alt_name": "State Route 224 (Springvale)" + }, + "lat": "43.46610", + "lon": "-70.79607", + "id": 146134, + "buildings": [ + { + "name": "17", + "lat": "43.46572", + "lon": "-70.79551", + "postcode": "04083" + }, + { + "name": "17", + "lat": "43.46600", + "lon": "-70.79571", + "postcode": "04083" + }, + { + "name": "22", + "lat": "43.46652", + "lon": "-70.79590", + "postcode": "04083" + } + ], + "intersectedStreets": [ + { + "name": "Main Street", + "names": { + "alt_name": "State Route 11; State Route 109 (Springvale)" + }, + "lat": "43.46541", + "lon": "-70.79669" + }, + { + "name": "Oak Street", + "names": { + "alt_name": "State Route 11A" + }, + "lat": "43.46541", + "lon": "-70.79669" + }, + { + "name": "Payne Street (Springvale)", + "lat": "43.46669", + "lon": "-70.79491" + }, + { + "name": "Pleasant Street (Springvale)", + "names": { + "alt_name": "State Route 224 (Springvale)" + }, + "lat": "43.46669", + "lon": "-70.79491" + }, + { + "name": "Water Street (Springvale)", + "lat": "43.46669", + "lon": "-70.79491" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Houlton", + "lat": "46.12513", + "lon": "-67.84079", + "id": 1895709513, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "46.12858", + "lon": "-67.85064", + "id": 61267 + }, + { + "name": "Bridge Road", + "lat": "46.19847", + "lon": "-67.98359", + "id": 122846 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Jay", + "lat": "44.50434", + "lon": "-70.21637", + "id": 158800578, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.50417", + "lon": "-70.22096", + "id": 91138, + "buildings": [ + { + "name": "1", + "lat": "44.50443", + "lon": "-70.22161", + "postcode": "04239" + }, + { + "name": "5", + "lat": "44.50431", + "lon": "-70.22167", + "postcode": "04239" + }, + { + "name": "7", + "lat": "44.50420", + "lon": "-70.22184", + "postcode": "04239" + }, + { + "name": "9", + "lat": "44.50408", + "lon": "-70.22197", + "postcode": "04239" + }, + { + "name": "12", + "lat": "44.50417", + "lon": "-70.22096", + "postcode": "04239" + }, + { + "name": "22", + "lat": "44.50388", + "lon": "-70.22236", + "postcode": "04239" + }, + { + "name": "26", + "lat": "44.50408", + "lon": "-70.22246", + "postcode": "04239" + }, + { + "name": "31", + "lat": "44.50459", + "lon": "-70.22246", + "postcode": "04239" + }, + { + "name": "34", + "lat": "44.50465", + "lon": "-70.22296", + "postcode": "04239" + }, + { + "name": "38", + "lat": "44.50491", + "lon": "-70.22313", + "postcode": "04239" + } + ], + "intersectedStreets": [ + { + "name": "Intervale Road", + "lat": "44.50431", + "lon": "-70.22096" + }, + { + "name": "Knight Lane", + "lat": "44.50393", + "lon": "-70.22214" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Oak Terrace", + "lat": "43.08950", + "lon": "-70.75880", + "id": 158808001, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.08903", + "lon": "-70.75682", + "id": 10973, + "buildings": [ + { + "name": "19", + "lat": "43.08903", + "lon": "-70.75682", + "postcode": "03904" + }, + { + "name": "22", + "lat": "43.08943", + "lon": "-70.75661", + "postcode": "03904" + }, + { + "name": "28", + "lat": "43.08875", + "lon": "-70.75908", + "postcode": "03904" + }, + { + "name": "30", + "lat": "43.08889", + "lon": "-70.75923", + "postcode": "03904" + } + ], + "intersectedStreets": [ + { + "name": "Oak Terrace", + "lat": "43.08942", + "lon": "-70.75951" + }, + { + "name": "US 1 Bypass", + "lat": "43.08950", + "lon": "-70.75747" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Kittery", + "lat": "43.08845", + "lon": "-70.73685", + "id": 158863554, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street (Oak Terrace)", + "lat": "43.08906", + "lon": "-70.75506", + "id": 10972, + "buildings": [ + { + "name": "2", + "lat": "43.08959", + "lon": "-70.75449", + "postcode": "03904" + }, + { + "name": "5", + "lat": "43.08906", + "lon": "-70.75506", + "postcode": "03904" + }, + { + "name": "6", + "lat": "43.08948", + "lon": "-70.75489", + "postcode": "03904" + }, + { + "name": "7", + "lat": "43.08917", + "lon": "-70.75552", + "postcode": "03904" + }, + { + "name": "8", + "lat": "43.08954", + "lon": "-70.75517", + "postcode": "03904" + }, + { + "name": "9", + "lat": "43.08915", + "lon": "-70.75571", + "postcode": "03904" + }, + { + "name": "10", + "lat": "43.08951", + "lon": "-70.75536", + "postcode": "03904" + }, + { + "name": "11", + "lat": "43.08914", + "lon": "-70.75599", + "postcode": "03904" + }, + { + "name": "12", + "lat": "43.08958", + "lon": "-70.75575", + "postcode": "03904" + }, + { + "name": "12", + "lat": "43.08959", + "lon": "-70.75592", + "postcode": "03904" + }, + { + "name": "12", + "lat": "43.08959", + "lon": "-70.75584", + "postcode": "03904" + }, + { + "name": "12", + "lat": "43.08959", + "lon": "-70.75579", + "postcode": "03904" + }, + { + "name": "13", + "lat": "43.08917", + "lon": "-70.75618", + "postcode": "03904" + }, + { + "name": "18", + "lat": "43.08947", + "lon": "-70.75637", + "postcode": "03904" + }, + { + "name": "19", + "lat": "43.08906", + "lon": "-70.75682", + "postcode": "03904" + }, + { + "name": "22", + "lat": "43.08945", + "lon": "-70.75661", + "postcode": "03904" + }, + { + "name": "28", + "lat": "43.08876", + "lon": "-70.75908", + "postcode": "03904" + }, + { + "name": "30", + "lat": "43.08890", + "lon": "-70.75923", + "postcode": "03904" + } + ], + "intersectedStreets": [ + { + "name": "Cook Street (Oak Terrace)", + "lat": "43.08907", + "lon": "-70.75459" + }, + { + "name": "Government Street (Kittery Foreside)", + "lat": "43.08907", + "lon": "-70.75459" + }, + { + "name": "Moores Court", + "lat": "43.08925", + "lon": "-70.75494" + }, + { + "name": "Old Post Road (Remick Corners)", + "lat": "43.08934", + "lon": "-70.75710" + }, + { + "name": "Oak Terrace", + "lat": "43.08943", + "lon": "-70.75951" + }, + { + "name": "US 1 Bypass", + "lat": "43.08951", + "lon": "-70.75747" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Saco", + "lat": "43.50092", + "lon": "-70.44283", + "id": 158808782, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Wells", + "lat": "43.32218", + "lon": "-70.58098", + "id": 158808778, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Rumford", + "lat": "44.55427", + "lon": "-70.55145", + "id": 158809528, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.54271", + "lon": "-70.54847", + "id": 136804 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Phillips", + "lat": "44.82311", + "lon": "-70.33951", + "id": 158914491, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.82352", + "lon": "-70.33986", + "id": 123389 + } + ], + "matchStreet": 1 + }, + { + "name": "Frenchtown", + "lat": "43.68346", + "lon": "-70.36017", + "id": 45250075539, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.68018", + "lon": "-70.36840", + "id": 19, + "buildings": [ + { + "name": "41", + "lat": "43.67877", + "lon": "-70.36737", + "postcode": "04092" + }, + { + "name": "42", + "lat": "43.67850", + "lon": "-70.36777", + "postcode": "04092" + }, + { + "name": "51", + "lat": "43.67892", + "lon": "-70.36767", + "postcode": "04092" + }, + { + "name": "67", + "lat": "43.67942", + "lon": "-70.36820", + "postcode": "04092" + }, + { + "name": "72", + "lat": "43.67895", + "lon": "-70.36818", + "postcode": "04092" + }, + { + "name": "75", + "lat": "43.67957", + "lon": "-70.36835", + "postcode": "04092" + }, + { + "name": "77", + "lat": "43.67960", + "lon": "-70.36838", + "postcode": "04092" + }, + { + "name": "80", + "lat": "43.67926", + "lon": "-70.36863", + "postcode": "04092" + }, + { + "name": "87", + "lat": "43.68018", + "lon": "-70.36840" + }, + { + "name": "90", + "lat": "43.67915", + "lon": "-70.36857", + "postcode": "04092" + }, + { + "name": "119", + "lat": "43.68061", + "lon": "-70.36825", + "postcode": "04092" + }, + { + "name": "131", + "lat": "43.68086", + "lon": "-70.36784", + "postcode": "04092" + }, + { + "name": "135", + "lat": "43.68114", + "lon": "-70.36780", + "postcode": "04092" + }, + { + "name": "151", + "lat": "43.68151", + "lon": "-70.36754", + "postcode": "04092" + }, + { + "name": "155", + "lat": "43.68175", + "lon": "-70.36732", + "postcode": "04092" + }, + { + "name": "159", + "lat": "43.68187", + "lon": "-70.36724", + "postcode": "04092" + }, + { + "name": "163", + "lat": "43.68204", + "lon": "-70.36709", + "postcode": "04092" + }, + { + "name": "173", + "lat": "43.68221", + "lon": "-70.36694", + "postcode": "04092" + }, + { + "name": "181", + "lat": "43.68254", + "lon": "-70.36681", + "postcode": "04092" + }, + { + "name": "197", + "lat": "43.68297", + "lon": "-70.36640", + "postcode": "04092" + }, + { + "name": "221", + "lat": "43.68355", + "lon": "-70.36593", + "postcode": "04092" + }, + { + "name": "225", + "lat": "43.68352", + "lon": "-70.36567", + "postcode": "04092" + }, + { + "name": "231", + "lat": "43.68383", + "lon": "-70.36561", + "postcode": "04092" + }, + { + "name": "237", + "lat": "43.68404", + "lon": "-70.36531", + "postcode": "04092" + }, + { + "name": "243", + "lat": "43.68418", + "lon": "-70.36509", + "postcode": "04092" + }, + { + "name": "249", + "lat": "43.68442", + "lon": "-70.36486", + "postcode": "04092" + }, + { + "name": "259", + "lat": "43.68465", + "lon": "-70.36460", + "postcode": "04092" + }, + { + "name": "271", + "lat": "43.68493", + "lon": "-70.36423", + "postcode": "04092" + }, + { + "name": "281", + "lat": "43.68519", + "lon": "-70.36400", + "postcode": "04092" + }, + { + "name": "287", + "lat": "43.68545", + "lon": "-70.36366", + "postcode": "04092" + }, + { + "name": "299", + "lat": "43.68572", + "lon": "-70.36346", + "postcode": "04092" + }, + { + "name": "315", + "lat": "43.68603", + "lon": "-70.36271", + "postcode": "04092" + }, + { + "name": "331", + "lat": "43.68654", + "lon": "-70.36252", + "postcode": "04092" + }, + { + "name": "339", + "lat": "43.68673", + "lon": "-70.36235", + "postcode": "04092" + }, + { + "name": "347", + "lat": "43.68699", + "lon": "-70.36205", + "postcode": "04092" + }, + { + "name": "359", + "lat": "43.68727", + "lon": "-70.36183", + "postcode": "04092" + }, + { + "name": "363", + "lat": "43.68757", + "lon": "-70.36155", + "postcode": "04092" + }, + { + "name": "365", + "lat": "43.68769", + "lon": "-70.36149", + "postcode": "04092" + }, + { + "name": "369", + "lat": "43.68780", + "lon": "-70.36134", + "postcode": "04092" + }, + { + "name": "373", + "lat": "43.68798", + "lon": "-70.36125", + "postcode": "04092" + } + ], + "intersectedStreets": [ + { + "name": "Riverbank Footpath", + "lat": "43.67827", + "lon": "-70.36720" + }, + { + "name": "Dana Court", + "lat": "43.67852", + "lon": "-70.36735" + }, + { + "name": "Brown Street", + "lat": "43.67877", + "lon": "-70.36762" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Milton", + "lat": "43.46802", + "lon": "-70.96797", + "id": 368004, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Beals", + "lat": "44.52001", + "lon": "-67.61536", + "id": 158843569, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.52178", + "lon": "-67.61407", + "id": 144064 + } + ], + "matchStreet": 1 + }, + { + "name": "Madawaska", + "lat": "47.35557", + "lon": "-68.32192", + "id": 158821309, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "47.35676", + "lon": "-68.32865", + "id": 122575 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Farmington", + "lat": "44.67109", + "lon": "-70.15183", + "id": 158855357, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street (West Farmington)", + "lat": "44.66243", + "lon": "-70.15041", + "id": 123388 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Deer Isle", + "lat": "44.22404", + "lon": "-68.67760", + "id": 158806461, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.22286", + "lon": "-68.68376", + "id": 6478 + } + ], + "matchStreet": 1 + }, + { + "name": "Jonesport", + "lat": "44.53323", + "lon": "-67.59888", + "id": 158837181, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street (West Jonesport)", + "lat": "44.52875", + "lon": "-67.61606", + "id": 38527 + } + ], + "matchStreet": 1 + }, + { + "name": "Harpswell", + "lat": "43.80753", + "lon": "-69.93488", + "id": 7414987064, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Milford", + "lat": "44.94618", + "lon": "-68.64392", + "id": 158853798, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.94346", + "lon": "-68.64305", + "id": 138136 + } + ], + "matchStreet": 1 + }, + { + "name": "Cornish", + "lat": "43.80480", + "lon": "-70.80139", + "id": 158918051, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.80533", + "lon": "-70.80092", + "id": 22064, + "buildings": [ + { + "name": "4", + "lat": "43.80528", + "lon": "-70.80116", + "postcode": "04020" + }, + { + "name": "6", + "lat": "43.80533", + "lon": "-70.80092", + "postcode": "04020" + }, + { + "name": "13", + "lat": "43.80531", + "lon": "-70.80017", + "postcode": "04020" + }, + { + "name": "14", + "lat": "43.80556", + "lon": "-70.80045", + "postcode": "04020" + }, + { + "name": "16", + "lat": "43.80559", + "lon": "-70.80028", + "postcode": "04020" + }, + { + "name": "18", + "lat": "43.80568", + "lon": "-70.80010", + "postcode": "04020" + }, + { + "name": "19", + "lat": "43.80551", + "lon": "-70.79978", + "postcode": "04020" + }, + { + "name": "20", + "lat": "43.80576", + "lon": "-70.79985", + "postcode": "04020" + }, + { + "name": "25", + "lat": "43.80570", + "lon": "-70.79907", + "postcode": "04020" + } + ], + "intersectedStreets": [ + { + "name": "Main Street", + "lat": "43.80503", + "lon": "-70.80118" + }, + { + "name": "High Street", + "lat": "43.80506", + "lon": "-70.80143" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "South Portland", + "lat": "43.64147", + "lon": "-70.24088", + "id": 158897572, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Westbrook Street (Thornton Heights)", + "lat": "43.62326", + "lon": "-70.30615", + "id": 53667 + }, + { + "name": "Westbrook St Dead End", + "lat": "43.62025", + "lon": "-70.30544", + "id": 121415 + } + ], + "init": 1 + }, + { + "name": "Bingham", + "lat": "45.05897", + "lon": "-69.88266", + "id": 158803373, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "45.05317", + "lon": "-69.88296", + "id": 87554 + } + ], + "matchStreet": 1 + }, + { + "name": "Old Orchard Beach", + "lat": "43.51768", + "lon": "-70.37773", + "id": 158809517, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street (Ocean Park)", + "lat": "43.50292", + "lon": "-70.39269", + "id": 23573, + "buildings": [ + { + "name": "7", + "lat": "43.50292", + "lon": "-70.39269", + "postcode": "04064" + } + ], + "intersectedStreets": [ + { + "name": "Temple Avenue", + "lat": "43.50351", + "lon": "-70.39185" + }, + { + "name": "Randall Avenue (Ocean Park)", + "lat": "43.50310", + "lon": "-70.39219" + }, + { + "name": "Maine Avenue (Ocean Park)", + "lat": "43.50270", + "lon": "-70.39256" + }, + { + "name": "Massachusetts Avenue (Ocean Park)", + "lat": "43.50232", + "lon": "-70.39290" + }, + { + "name": "Connecticut Avenue (Ocean Park)", + "lat": "43.50189", + "lon": "-70.39327" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Skowhegan", + "lat": "44.76526", + "lon": "-69.71924", + "id": 158901925, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.76214", + "lon": "-69.72134", + "id": 104395 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Augusta", + "enName": "Augusta", + "names": { + "ru": "Огаста", + "uk": "Огаста", + "pl": "Augusta", + "ta": "அகஸ்தா" + }, + "lat": "44.31058", + "lon": "-69.77966", + "id": 158860186, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.31692", + "lon": "-69.77303", + "id": 125643, + "intersectedStreets": [ + { + "name": "Cony Street", + "lat": "44.31668", + "lon": "-69.77144" + }, + { + "name": "State Street", + "names": { + "alt_name": "Memorial Circle" + }, + "lat": "44.31749", + "lon": "-69.77649" + }, + { + "name": "Pleasant Street", + "lat": "44.31751", + "lon": "-69.77739" + }, + { + "name": "Summer Street", + "lat": "44.31739", + "lon": "-69.77848" + }, + { + "name": "Elm Street", + "lat": "44.31740", + "lon": "-69.77949" + }, + { + "name": "Winter Street", + "lat": "44.31754", + "lon": "-69.78026" + }, + { + "name": "Spring Street", + "lat": "44.31781", + "lon": "-69.78140" + }, + { + "name": "North Street", + "lat": "44.31797", + "lon": "-69.78194" + }, + { + "name": "North Chestnut Street", + "lat": "44.31801", + "lon": "-69.78226" + }, + { + "name": "Commercial Street", + "lat": "44.31708", + "lon": "-69.77389" + }, + { + "name": "Crosby Street", + "lat": "44.31739", + "lon": "-69.77533" + }, + { + "name": "Front Street", + "lat": "44.31694", + "lon": "-69.77312" + }, + { + "name": "Water Street", + "lat": "44.31700", + "lon": "-69.77346" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Portland", + "enName": "Portland", + "names": { + "ru": "Портленд", + "uk": "Портленд" + }, + "lat": "43.66103", + "lon": "-70.25486", + "id": 158867610, + "type": "CITY", + "listOfStreets": [ + { + "name": "Westbrook Arterial (Sagamore Village)", + "lat": "43.66658", + "lon": "-70.32952", + "id": 148868 + }, + { + "name": "Westbrook Street", + "lat": "43.66126", + "lon": "-70.33387", + "id": 148884 + } + ], + "init": 1 + }, + { + "name": "Ogunquit", + "lat": "43.24898", + "lon": "-70.59922", + "id": 158844055, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Lane", + "lat": "43.24961", + "lon": "-70.59701", + "id": 147766, + "intersectedStreets": [ + { + "name": "Beach Street", + "lat": "43.24992", + "lon": "-70.59701" + } + ] + }, + { + "name": "Bridge Street", + "lat": "43.24945", + "lon": "-70.59716", + "id": 97101, + "buildings": [ + { + "name": "14", + "lat": "43.24945", + "lon": "-70.59716", + "postcode": "03907" + }, + { + "name": "22", + "lat": "43.24919", + "lon": "-70.59726", + "postcode": "03907" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "West Jonesport", + "lat": "44.52897", + "lon": "-67.62110", + "id": 158856597, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.52777", + "lon": "-67.61538", + "id": 156758 + } + ], + "matchStreet": 1 + }, + { + "name": "Caribou", + "names": { + "ko": "카리부" + }, + "lat": "46.86056", + "lon": "-68.01197", + "id": 158869918, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "46.85784", + "lon": "-68.00593", + "id": 122577 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "North Lincoln", + "lat": "45.42700", + "lon": "-68.46197", + "id": 158817426, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.43089", + "lon": "-68.45763", + "id": 138406 + } + ], + "matchStreet": 1 + }, + { + "name": "West Enfield", + "lat": "45.24339", + "lon": "-68.64975", + "id": 158866578, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "45.23741", + "lon": "-68.64837", + "id": 80408 + } + ], + "matchStreet": 1 + }, + { + "name": "Kezar Falls", + "lat": "43.80785", + "lon": "-70.88895", + "id": 158856838, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "43.80801", + "lon": "-70.88868", + "id": 136808, + "intersectedStreets": [ + { + "name": "High Street", + "lat": "43.80921", + "lon": "-70.88892" + }, + { + "name": "Main Street", + "lat": "43.80921", + "lon": "-70.88892" + }, + { + "name": "River Street", + "lat": "43.80802", + "lon": "-70.88868" + }, + { + "name": "Ridlon Lane", + "lat": "43.80793", + "lon": "-70.88870" + }, + { + "name": "School Street", + "lat": "43.80770", + "lon": "-70.88887" + }, + { + "name": "Ossipee Trail", + "lat": "43.80742", + "lon": "-70.88909" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Eastport", + "lat": "44.90647", + "lon": "-66.99051", + "id": 158853506, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Rollinsford", + "lat": "43.22773", + "lon": "-70.82966", + "id": 370355, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Waterville", + "lat": "44.55201", + "lon": "-69.63171", + "id": 158813569, + "type": "CITY", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.54733", + "lon": "-69.62667", + "id": 76219 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Cambridge", + "lat": "45.02452", + "lon": "-69.47411", + "id": 158844047, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "45.05433", + "lon": "-69.39559", + "id": 101383 + }, + { + "name": "Bridge Road", + "lat": "45.09278", + "lon": "-69.39276", + "id": 70084 + }, + { + "name": "Bridge Road", + "lat": "45.07443", + "lon": "-69.38963", + "id": 70094 + } + ], + "matchStreet": 1 + }, + { + "name": "Gardiner", + "lat": "44.23044", + "lon": "-69.77554", + "id": 158877314, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.23347", + "lon": "-69.77209", + "id": 125641, + "intersectedStreets": [ + { + "name": "Maine Avenue", + "lat": "44.23347", + "lon": "-69.77222" + }, + { + "name": "Summer Street", + "lat": "44.23124", + "lon": "-69.77417" + }, + { + "name": "Highland Avenue", + "lat": "44.23159", + "lon": "-69.77400" + }, + { + "name": "Middle Street", + "lat": "44.23239", + "lon": "-69.77333" + }, + { + "name": "Spring Street", + "lat": "44.23285", + "lon": "-69.77297" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "West Newfield", + "lat": "43.64397", + "lon": "-70.92367", + "id": 158800779, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Bridge Street (Newfield)", + "lat": "43.64806", + "lon": "-70.84742", + "id": 9995, + "buildings": [ + { + "name": "193", + "lat": "43.63794", + "lon": "-70.84302", + "postcode": "04095" + }, + { + "name": "210", + "lat": "43.63834", + "lon": "-70.84529", + "postcode": "04095" + }, + { + "name": "223", + "lat": "43.63994", + "lon": "-70.84347", + "postcode": "04095" + }, + { + "name": "226", + "lat": "43.63921", + "lon": "-70.84572", + "postcode": "04095" + }, + { + "name": "231", + "lat": "43.64005", + "lon": "-70.84235", + "postcode": "04095" + }, + { + "name": "238", + "lat": "43.64061", + "lon": "-70.84491", + "postcode": "04095" + }, + { + "name": "247", + "lat": "43.64125", + "lon": "-70.84401", + "postcode": "04095" + }, + { + "name": "253", + "lat": "43.64176", + "lon": "-70.84431", + "postcode": "04095" + }, + { + "name": "267", + "lat": "43.64257", + "lon": "-70.84433", + "postcode": "04095" + }, + { + "name": "274", + "lat": "43.64336", + "lon": "-70.84512", + "postcode": "04095" + }, + { + "name": "275", + "lat": "43.64348", + "lon": "-70.84409", + "postcode": "04095" + }, + { + "name": "293", + "lat": "43.64421", + "lon": "-70.84366", + "postcode": "04095" + }, + { + "name": "305", + "lat": "43.64541", + "lon": "-70.84431", + "postcode": "04095" + }, + { + "name": "311", + "lat": "43.64573", + "lon": "-70.84476", + "postcode": "04095" + }, + { + "name": "320", + "lat": "43.64572", + "lon": "-70.84605", + "postcode": "04095" + }, + { + "name": "333", + "lat": "43.64662", + "lon": "-70.84613", + "postcode": "04095" + }, + { + "name": "340", + "lat": "43.64682", + "lon": "-70.84729", + "postcode": "04095" + }, + { + "name": "341", + "lat": "43.64702", + "lon": "-70.84665", + "postcode": "04095" + }, + { + "name": "357", + "lat": "43.64806", + "lon": "-70.84742", + "postcode": "04095" + }, + { + "name": "358", + "lat": "43.64797", + "lon": "-70.84789", + "postcode": "04095" + }, + { + "name": "360", + "lat": "43.64823", + "lon": "-70.84802", + "postcode": "04095" + } + ] + }, + { + "name": "Bridge Street (Sprague City)", + "lat": "43.63620", + "lon": "-70.84154", + "id": 9997, + "buildings": [ + { + "name": "8", + "lat": "43.62719", + "lon": "-70.84002", + "postcode": "04095" + }, + { + "name": "44", + "lat": "43.62860", + "lon": "-70.83956", + "postcode": "04095" + }, + { + "name": "54", + "lat": "43.62901", + "lon": "-70.84004", + "postcode": "04095" + }, + { + "name": "58", + "lat": "43.62958", + "lon": "-70.84079", + "postcode": "04095" + }, + { + "name": "132", + "lat": "43.63323", + "lon": "-70.84160", + "postcode": "04095" + }, + { + "name": "134", + "lat": "43.63379", + "lon": "-70.84201", + "postcode": "04095" + }, + { + "name": "136", + "lat": "43.63416", + "lon": "-70.84225", + "postcode": "04095" + }, + { + "name": "137", + "lat": "43.63429", + "lon": "-70.84139", + "postcode": "04095" + }, + { + "name": "161", + "lat": "43.63570", + "lon": "-70.84205", + "postcode": "04095" + }, + { + "name": "167", + "lat": "43.63620", + "lon": "-70.84154", + "postcode": "04095" + }, + { + "name": "177", + "lat": "43.63674", + "lon": "-70.84197", + "postcode": "04095" + }, + { + "name": "187", + "lat": "43.63716", + "lon": "-70.84265", + "postcode": "04095" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "St. Stephen", + "lat": "45.20040", + "lon": "-67.27986", + "id": 204489936, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Bucksport", + "lat": "44.57369", + "lon": "-68.79559", + "id": 158853239, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "44.57167", + "lon": "-68.78789", + "id": 94122 + } + ], + "matchStreet": 1 + }, + { + "name": "Wiscasset", + "lat": "44.00319", + "lon": "-69.66568", + "id": 158858870, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "43.97138", + "lon": "-69.67147", + "id": 133436, + "intersectedStreets": [ + { + "name": "Burnell Road", + "lat": "43.97222", + "lon": "-69.67186" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Ellsworth", + "lat": "44.54348", + "lon": "-68.42018", + "id": 158907508, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Easton", + "lat": "46.64115", + "lon": "-67.90947", + "id": 158874485, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Road", + "lat": "46.65045", + "lon": "-67.91029", + "id": 41826 + } + ], + "matchStreet": 1 + }, + { + "name": "Mars Hill", + "lat": "46.51588", + "lon": "-67.86641", + "id": 158821990, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "lat": "46.51811", + "lon": "-67.86611", + "id": 122573 + } + ], + "matchStreet": 1 + }, + { + "name": "Mexico", + "lat": "44.56112", + "lon": "-70.54596", + "id": 158855781, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Millinocket", + "lat": "45.65773", + "lon": "-68.70987", + "id": 158903664, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Springvale", + "lat": "43.46509", + "lon": "-70.79479", + "id": 158903656, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Bridge Street", + "names": { + "alt_name": "State Route 224" + }, + "lat": "43.46608", + "lon": "-70.79607", + "id": 146135, + "buildings": [ + { + "name": "17", + "lat": "43.46571", + "lon": "-70.79551", + "postcode": "04083" + }, + { + "name": "17", + "lat": "43.46599", + "lon": "-70.79571", + "postcode": "04083" + }, + { + "name": "22", + "lat": "43.46650", + "lon": "-70.79590", + "postcode": "04083" + } + ], + "intersectedStreets": [ + { + "name": "Water Street", + "lat": "43.46667", + "lon": "-70.79491" + } + ] + } + ], + "matchStreet": 1 + } + ] +} \ No newline at end of file diff --git a/OsmAnd-java/src/test/resources/search/carrer_de_vic.json b/OsmAnd-java/src/test/resources/search/carrer_de_vic.json new file mode 100644 index 0000000000..83ce2d7810 --- /dev/null +++ b/OsmAnd-java/src/test/resources/search/carrer_de_vic.json @@ -0,0 +1,6956 @@ +{ + "settings": { + "lat": "41.42389", + "lon": "1.96645", + "radiusLevel": 1, + "totalLimit": -1, + "lang": "", + "transliterateIfMissing": false, + "emptyQueryAllowed": false, + "sortByName": false + }, + "phrase": "carrer de Vic, Sant Bartomeu del grau", + "results": [ + "Carrer de Sant Bartomeu del Grau, Vic", + "Carrer de Vic, Sant Bartomeu del Grau", + "carrer Ponent, Sant Bartomeu del Grau", + "Carrer Pla de l'Oratori, Sant Bartomeu del Grau", + "carrer de Dalt, Sant Bartomeu del Grau", + "Carrer de la Migjorn, Sant Bartomeu del Grau", + "Carrer de la Tramuntana, Sant Bartomeu del Grau", + "Carrer de la Codina (Xalet Mas Reig), Sant Bartomeu del Grau", + "Carrer de Sant Bartomeu, Sant Cugat del Vallès", + "Carretera de Sant Bartomeu del Grau, Muntanyola", + "Carretera de Sant Bartomeu del Grau, Sant Bartomeu del Grau", + "Carretera de Sant Bartomeu, Sant Bartomeu del Grau", + "Carretera de Sant Bartomeu del Grau, Xalet Mas Reig", + "Camí de St. Bartomeu al Sorreig (Xalet Mas Reig), Sant Bartomeu del Grau", + "Carrer Tres Creus, Sant Bartomeu del Grau", + "Carrer del Mig, Sant Bartomeu del Grau", + "carrer Vell, Sant Bartomeu del Grau", + "Carrer Nou, Sant Bartomeu del Grau" + ], + "amenities": [ + { + "name": "Collada de Sant Bartomeu", + "lat": "42.13254", + "lon": "2.36052", + "id": 7047523056, + "subType": "saddle", + "type": "natural", + "additionalInfo": { + "ele": "1289" + } + }, + { + "name": "Esgèsia de Sant Bartomeu", + "lat": "41.26087", + "lon": "1.43803", + "id": 626076983, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Esgèsia de Sant Bartomeu", + "lat": "41.26087", + "lon": "1.43803", + "id": 626076983, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.16079", + "lon": "0.92000", + "id": 773636589, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_chapel": "chapel", + "abandoned": "yes", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "ruins": "yes" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.16079", + "lon": "0.92000", + "id": 773636589, + "subType": "abandoned_poi", + "type": "man_made", + "additionalInfo": { + "building_type_chapel": "chapel", + "abandoned": "yes", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "ruins": "yes" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.16079", + "lon": "0.92000", + "id": 773636589, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_chapel": "chapel", + "abandoned": "yes", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "ruins": "yes" + } + }, + { + "name": "Esglèsia de Sant Bartomeu", + "lat": "41.24611", + "lon": "1.48642", + "id": 589407255, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Església de Sant Bartomeu", + "lat": "42.12274", + "lon": "2.96206", + "id": 594632519, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Església de Sant Bartomeu", + "lat": "42.12274", + "lon": "2.96206", + "id": 594632519, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Carretera de Sant Bartomeu", + "lat": "41.95210", + "lon": "2.23660", + "id": 192305229, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "ref": "BV-4601" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.20114", + "lon": "2.19935", + "id": 1199378759, + "subType": "building", + "type": "man_made" + }, + { + "name": "riera de Sant Bartomeu", + "lat": "41.93689", + "lon": "2.17600", + "id": 761300829, + "subType": "stream", + "type": "natural" + }, + { + "name": "Coll de Sant Bartomeu", + "lat": "41.56389", + "lon": "2.34339", + "id": 2834790858, + "subType": "saddle", + "type": "natural" + }, + { + "name": "Cal Bartomeus", + "lat": "41.89541", + "lon": "1.78277", + "id": 442258781, + "subType": "building", + "type": "man_made" + }, + { + "name": "Sant Bartomeu", + "lat": "41.51886", + "lon": "1.70758", + "id": 595599237, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.51886", + "lon": "1.70758", + "id": 595599237, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian" + } + }, + { + "name": "Monument a Bartomeu Robert", + "names": { + "ca": "Monument a Bartomeu Robert" + }, + "lat": "41.39489", + "lon": "2.17555", + "id": 4538261640, + "subType": "monument", + "type": "tourism", + "additionalInfo": { + "artwork_type_statue": "statue", + "material_metal": "metal", + "length": "11.25", + "artist_name": "Josep Llimona", + "end_date": "1010-11-13", + "alt_name": "Monument al Doctor Robert", + "height": "12.6", + "width": "9.26", + "start_date": "1904-01-31", + "wikipedia": "http://ca.wikipedia.org/wiki/Monument al Doctor Robert" + } + }, + { + "name": "Sant Bartomeu i Santa Tecla", + "lat": "41.23469", + "lon": "1.81169", + "id": 463621227, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu i Santa Tecla", + "lat": "41.23469", + "lon": "1.81169", + "id": 463621227, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Mas Bartomeu", + "lat": "41.20394", + "lon": "1.54401", + "id": 8655443378, + "subType": "internet_access_wlan", + "type": "service", + "additionalInfo": { + "website": "http://www.barthomeus.com/en/rural-tourism/", + "phone": "+34 6007188857" + } + }, + { + "name": "Mas Bartomeu", + "lat": "41.20394", + "lon": "1.54401", + "id": 8655443378, + "subType": "isolated_dwelling", + "type": "administrative", + "additionalInfo": { + "website": "http://www.barthomeus.com/en/rural-tourism/", + "phone": "+34 6007188857" + } + }, + { + "name": "Sant Bartomeu de Favà", + "lat": "42.24723", + "lon": "1.20547", + "id": 1566711339, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Favà" + } + }, + { + "name": "Sant Bartomeu de Favà", + "lat": "42.24723", + "lon": "1.20547", + "id": 1566711339, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Favà" + } + }, + { + "name": "Ferrer i Bassa - Bartomeu Bermejo", + "lat": "41.38650", + "lon": "2.09169", + "id": 10822050304, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "ref": "108121", + "route_bus_ref": "EP2" + } + }, + { + "name": "Sant Bartomeu Sesgorgues", + "lat": "42.01482", + "lon": "2.36041", + "id": 591049713, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu Sesgorgues", + "lat": "42.01482", + "lon": "2.36041", + "id": 591049713, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.75358", + "lon": "1.90508", + "id": 668389083, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "route_hiking_ref_poi": "GR 151", + "operator": "GR" + } + }, + { + "name": "Torrent de Mas Bartomeu", + "lat": "41.29506", + "lon": "1.49365", + "id": 1142622473, + "subType": "stream", + "type": "natural" + }, + { + "name": "Circumval·lació - Sant Bartomeu", + "lat": "41.44305", + "lon": "2.21619", + "id": 11194749018, + "subType": "public_transport_stop_position", + "type": "transportation", + "additionalInfo": { + "bus_yes": "yes", + "ref": "101619", + "route_bus_ref": "B3, B5, B81", + "operator": "AMT (Autoritat Metropolitana del Transport)" + } + }, + { + "name": "Sant Bartomeu de Cabanyes", + "lat": "41.56242", + "lon": "2.34329", + "id": 396898673, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_chapel": "chapel", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Cabanyes" + } + }, + { + "name": "Sant Bartomeu de Cabanyes", + "lat": "41.56242", + "lon": "2.34329", + "id": 396898673, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_chapel": "chapel", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Cabanyes" + } + }, + { + "name": "Circumval·lació - Sant Bartomeu", + "lat": "41.44302", + "lon": "2.21623", + "id": 4298586344, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "covered_yes": "yes", + "bench_yes": "yes", + "bus_yes": "yes", + "operator": "AMT (Autoritat Metropolitana del Transport)", + "ref": "101619", + "route_bus_ref": "B3, B5, B81" + } + }, + { + "name": "Bartomeu", + "lat": "41.60580", + "lon": "1.84918", + "id": 13759518204, + "subType": "restaurant", + "type": "sustenance" + }, + { + "name": "Riera de Sant Bartomeu", + "lat": "41.42218", + "lon": "2.03183", + "id": 569985689, + "subType": "stream", + "type": "natural" + }, + { + "name": "Barranc de Sant Bartomeu", + "lat": "41.32223", + "lon": "0.81964", + "id": 1345538897, + "subType": "stream", + "type": "natural", + "additionalInfo": { + "intermittent": "yes" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.33647", + "lon": "1.68994", + "id": 14053259716, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Ermita de Sant Bartomeu", + "lat": "42.51543", + "lon": "1.14232", + "id": 455023675, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Ermita de Sant Bartomeu", + "lat": "42.51543", + "lon": "1.14232", + "id": 455023675, + "subType": "historic_ruins", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Ermita de Sant Bartomeu", + "lat": "42.51543", + "lon": "1.14232", + "id": 455023675, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Riera de Sant Bartomeu", + "lat": "41.41853", + "lon": "2.02412", + "id": 569985685, + "subType": "stream", + "type": "natural", + "additionalInfo": { + "tunnel_waterway": "yes" + } + }, + { + "name": "Riera de Sant Bartomeu", + "lat": "41.41853", + "lon": "2.02412", + "id": 569985685, + "subType": "tunnel", + "type": "man_made", + "additionalInfo": { + "tunnel_waterway": "yes" + } + }, + { + "name": "Riera de Sant Bartomeu", + "lat": "41.41623", + "lon": "2.01698", + "id": 569985687, + "subType": "stream", + "type": "natural" + }, + { + "name": "Torrent de Sant Bartomeu", + "lat": "41.56362", + "lon": "2.33994", + "id": 1533043985, + "subType": "stream", + "type": "natural", + "additionalInfo": { + "tunnel_waterway": "yes" + } + }, + { + "name": "Torrent de Sant Bartomeu", + "lat": "41.56362", + "lon": "2.33994", + "id": 1533043985, + "subType": "tunnel", + "type": "man_made", + "additionalInfo": { + "tunnel_waterway": "yes" + } + }, + { + "name": "Sant Bartomeu - Av. Amèrica", + "lat": "41.44208", + "lon": "2.21696", + "id": 1209841198, + "subType": "public_transport_platform", + "type": "transportation", + "additionalInfo": { + "covered_yes": "yes", + "bench_yes": "yes", + "bus_yes": "yes", + "operator": "AMT (Autoritat Metropolitana del Transport)", + "ref": "106952", + "route_bus_ref": "B3" + } + }, + { + "name": "Torrent de Sant Bartomeu", + "lat": "41.56328", + "lon": "2.34007", + "id": 1533043987, + "subType": "stream", + "type": "natural" + }, + { + "name": "CEIP Sant Bartomeu", + "lat": "41.77346", + "lon": "0.95373", + "id": 4567668722, + "subType": "school", + "type": "education" + }, + { + "name": "Serra de Sant Bartomeu", + "lat": "42.04293", + "lon": "0.67967", + "id": 2483310648, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Sant Bartomeu", + "lat": "41.25161", + "lon": "0.48567", + "id": 4818161750, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Plana del Mas de Bartomeu", + "lat": "41.32518", + "lon": "1.50174", + "id": 2483585588, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Sant Bartomeu de Covildases", + "lat": "42.12366", + "lon": "2.36092", + "id": 408311831, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Covildases" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.09004", + "lon": "1.83173", + "id": 751409033, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "building_type_church": "church", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Valldan" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.09004", + "lon": "1.83173", + "id": 751409033, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "building_type_church": "church", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Valldan" + } + }, + { + "name": "Sant Bartomeu", + "lat": "40.98393", + "lon": "0.40540", + "id": 365424263, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "40.98393", + "lon": "0.40540", + "id": 365424263, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.12533", + "lon": "2.36084", + "id": 408311829, + "subType": "isolated_dwelling", + "type": "administrative" + }, + { + "name": "Sant Bartomeu", + "lat": "42.12533", + "lon": "2.36084", + "id": 408311829, + "subType": "building", + "type": "man_made" + }, + { + "name": "Riera de Sant Bartomeu", + "lat": "42.12108", + "lon": "2.36333", + "id": 408311827, + "subType": "stream", + "type": "natural" + }, + { + "name": "Parròquia de Sant Bartomeu", + "lat": "41.35682", + "lon": "2.14362", + "id": 4416472365056, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.08986", + "lon": "1.83047", + "id": 14626078594, + "subType": "public_transport_stop_position", + "type": "transportation", + "additionalInfo": { + "bus_yes": "yes", + "route_bus_ref": "L2" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.20096", + "lon": "2.19939", + "id": 11409298500, + "subType": "peak", + "type": "natural", + "additionalInfo": { + "ele": "907.3" + } + }, + { + "name": "Font de Sant Bartomeu", + "lat": "41.56263", + "lon": "2.34039", + "id": 2838332968, + "subType": "drinking_water", + "type": "man_made" + }, + { + "name": "Sant Bartomeu", + "lat": "42.14971", + "lon": "2.43931", + "id": 6957707196, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.14971", + "lon": "2.43931", + "id": 6957707196, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.45913", + "lon": "0.35922", + "id": 881250253, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "tourism_yes": "yes" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.45913", + "lon": "0.35922", + "id": 881250253, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "tourism_yes": "yes" + } + }, + { + "name": "Refugi Bartomeu Puiggrós", + "lat": "41.61103", + "lon": "1.81783", + "id": 356628491, + "subType": "alpine_hut", + "type": "tourism", + "additionalInfo": { + "reservation_no": "no", + "fee_no": "no", + "website": "https://www.feec.cat/refugi/refugi-santa-cecilia-bartomeu-puiggros-actualment-fora-de-servei/", + "operator": "Federació d'Entitats Excursionistes de Catalunya", + "ele": "678" + } + }, + { + "name": "Refugi Bartomeu Puiggrós", + "lat": "41.61103", + "lon": "1.81783", + "id": 356628491, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "reservation_no": "no", + "fee_no": "no", + "website": "https://www.feec.cat/refugi/refugi-santa-cecilia-bartomeu-puiggros-actualment-fora-de-servei/", + "operator": "Federació d'Entitats Excursionistes de Catalunya", + "ele": "678" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.60533", + "lon": "1.19184", + "id": 4915765324, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Serrat de Sant Bartomeu", + "lat": "42.01369", + "lon": "1.52899", + "id": 5287221800, + "subType": "peak", + "type": "natural", + "additionalInfo": { + "ele": "869.7", + "wikipedia": "http://ca.wikipedia.org/wiki/Serrat de Sant Bartomeu" + } + }, + { + "name": "Sant Bartomeu de la Quadra", + "lat": "41.42595", + "lon": "2.03766", + "id": 4303985092, + "subType": "village", + "type": "administrative" + }, + { + "name": "Carretera de Sant Bartomeu", + "lat": "41.94291", + "lon": "2.24117", + "id": 618135959, + "subType": "bridge", + "type": "man_made", + "additionalInfo": { + "bridge_car": "yes", + "foot_no": "no", + "operator": "Eix-Bus, SA, Sagalés", + "ref": "BV-4601", + "route_bus_ref": "L0324, L9" + } + }, + { + "name": "Barranc de Sant Bartomeu", + "lat": "41.31632", + "lon": "0.82661", + "id": 365845663, + "subType": "stream", + "type": "natural", + "additionalInfo": { + "intermittent": "yes" + } + }, + { + "name": "Sant Bartomeu de Malgrat", + "lat": "42.29904", + "lon": "1.30587", + "id": 1567304955, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Malgrat" + } + }, + { + "name": "Sant Bartomeu de Malgrat", + "lat": "42.29904", + "lon": "1.30587", + "id": 1567304955, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Malgrat" + } + }, + { + "name": "Sant Bartomeu de la Quadra", + "lat": "41.42596", + "lon": "2.03734", + "id": 792807189, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.62957", + "lon": "0.83176", + "id": 806154843, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.62957", + "lon": "0.83176", + "id": 806154843, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Església de Sant Bartomeu", + "lat": "41.13746", + "lon": "0.90953", + "id": 1522708629, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Església de Sant Bartomeu", + "lat": "41.13746", + "lon": "0.90953", + "id": 1522708629, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu del Portell", + "lat": "42.18459", + "lon": "2.78257", + "id": 503402073, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu del Portell", + "lat": "42.18459", + "lon": "2.78257", + "id": 503402073, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Bac de Sant Bartomeu", + "lat": "42.01525", + "lon": "2.36002", + "id": 819238709, + "subType": "cliff", + "type": "natural" + }, + { + "name": "St. Bartomeu del Grau / Gurb", + "lat": "41.94245", + "lon": "2.23168", + "id": 287970188, + "subType": "motorway_junction", + "type": "transportation", + "additionalInfo": { + "ref": "178" + } + }, + { + "name": "St. Bartomeu del Grau / Gurb", + "lat": "41.93913", + "lon": "2.23220", + "id": 4186739438, + "subType": "motorway_junction", + "type": "transportation", + "additionalInfo": { + "ref": "62" + } + }, + { + "name": "Torrent de Mas Bartomeu", + "lat": "41.31308", + "lon": "1.49760", + "id": 1346167445, + "subType": "stream", + "type": "natural", + "additionalInfo": { + "intermittent": "yes" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.91855", + "lon": "1.14670", + "id": 1272049979, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "building_type_church": "church", + "religion_christian": "christian", + "tourism_yes": "yes", + "website": "http://www.ponts.cat/ca/administracio/ajuntamentponts/llocs-dinteres/sant-bartomeu-del-tossal/109580.html" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.91855", + "lon": "1.14670", + "id": 1272049979, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "building_type_church": "church", + "religion_christian": "christian", + "tourism_yes": "yes", + "website": "http://www.ponts.cat/ca/administracio/ajuntamentponts/llocs-dinteres/sant-bartomeu-del-tossal/109580.html" + } + }, + { + "name": "Baga de Sant Bartomeu", + "lat": "42.11861", + "lon": "2.36346", + "id": 2483114606, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Coll de Sant Bartomeu", + "lat": "41.56226", + "lon": "2.34337", + "id": 4171544074, + "subType": "saddle", + "type": "natural" + }, + { + "name": "Església Sant Bartomeu", + "lat": "41.18621", + "lon": "1.45425", + "id": 478522345, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Església Sant Bartomeu", + "lat": "41.18621", + "lon": "1.45425", + "id": 478522345, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Font d'en Bartomeu", + "lat": "41.46683", + "lon": "2.21259", + "id": 10342753736, + "subType": "spring", + "type": "natural" + }, + { + "name": "Coveta de Mas Bartomeu", + "lat": "41.31638", + "lon": "1.49745", + "id": 13741861990, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Sant Bartomeu", + "lat": "41.15953", + "lon": "0.98349", + "id": 615003673, + "subType": "historic_ruins", + "type": "tourism" + }, + { + "name": "Sant Bartomeu de Navarcles", + "lat": "41.75479", + "lon": "1.90593", + "id": 383189027, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_chapel": "chapel", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Navarcles" + } + }, + { + "name": "Sant Bartomeu de Navarcles", + "lat": "41.75479", + "lon": "1.90593", + "id": 383189027, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_chapel": "chapel", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Navarcles" + } + }, + { + "name": "Farmàcia Fullana Fiol, Bartomeu", + "names": { + "es": "Farmacia Fullana Fior" + }, + "lat": "41.11690", + "lon": "1.24882", + "id": 8741907834, + "subType": "pharmacy", + "type": "healthcare", + "openingHours": "Mo-Su 09:00-22:00", + "additionalInfo": { + "wheelchair_yes": "yes", + "dispensing_yes": "yes", + "opening_hours": "Mo-Su 09:00-22:00", + "website": "http://www.farmaciafullana.com", + "phone": "+34977214517", + "ref": "3622889" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.11643", + "lon": "0.53704", + "id": 200405579, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.26557", + "lon": "1.36593", + "id": 438850967, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.26557", + "lon": "1.36593", + "id": 438850967, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Ermita de Sant Bartomeu", + "lat": "41.69527", + "lon": "2.23484", + "id": 494172861, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Ermita de Sant Bartomeu", + "lat": "41.69527", + "lon": "2.23484", + "id": 494172861, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Església Sant Bartomeu", + "lat": "41.66652", + "lon": "0.55528", + "id": 662608051, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church" + } + }, + { + "name": "Biblioteca pública Sant Bartomeu", + "lat": "41.66605", + "lon": "0.55723", + "id": 662585265, + "subType": "public_bookcase", + "type": "entertainment" + }, + { + "name": "Sant Bartomeu del Grau", + "lat": "41.98077", + "lon": "2.17504", + "id": 1100085252, + "subType": "village", + "type": "administrative", + "additionalInfo": { + "population": "967", + "ele": "869" + } + }, + { + "name": "Sant Bartomeu de la Vall de Vilaramó", + "lat": "41.96298", + "lon": "1.94203", + "id": 1571465203, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Vall de Vilaramó" + } + }, + { + "name": "Sant Bartomeu de la Vall de Vilaramó", + "lat": "41.96298", + "lon": "1.94203", + "id": 1571465203, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Vall de Vilaramó" + } + }, + { + "name": "Sant Bartomeu de Pincaró", + "lat": "42.33474", + "lon": "2.67644", + "id": 732345343, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Pincaró" + } + }, + { + "name": "Sant Bartomeu de Pincaró", + "lat": "42.33474", + "lon": "2.67644", + "id": 732345343, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Pincaró" + } + }, + { + "name": "Sant Bartomeu i Sant Roc", + "lat": "40.63480", + "lon": "0.27983", + "id": 4403358244864, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.95434", + "lon": "1.00070", + "id": 794066121, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "tourism_yes": "yes" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.95434", + "lon": "1.00070", + "id": 794066121, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_roman_catholic": "roman_catholic", + "religion_christian": "christian", + "tourism_yes": "yes" + } + }, + { + "name": "Sant Bartomeu de la Quadra", + "lat": "41.42818", + "lon": "2.03951", + "id": 305746279, + "subType": "village", + "type": "administrative", + "additionalInfo": { + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Quadra" + } + }, + { + "name": "Sant Bartomeu de la Quadra", + "lat": "41.42818", + "lon": "2.03951", + "id": 305746279, + "subType": "protected_area", + "type": "natural", + "additionalInfo": { + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Quadra" + } + }, + { + "name": "Sant Bartomeu de la Quadra", + "lat": "41.42818", + "lon": "2.03951", + "id": 305746279, + "subType": "residential", + "type": "administrative", + "additionalInfo": { + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Quadra" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.33564", + "lon": "1.68801", + "id": 7517265072, + "subType": "isolated_dwelling", + "type": "administrative" + }, + { + "name": "Sant Bartomeu - Av. Amèrica", + "lat": "41.44205", + "lon": "2.21692", + "id": 11457138432, + "subType": "public_transport_stop_position", + "type": "transportation", + "additionalInfo": { + "bus_yes": "yes", + "ref": "106952", + "route_bus_ref": "B3", + "operator": "AMT (Autoritat Metropolitana del Transport)" + } + }, + { + "name": "Mas Bartomeu", + "lat": "41.32159", + "lon": "1.49588", + "id": 643259774, + "subType": "historic_ruins", + "type": "tourism" + }, + { + "name": "Sant Bartomeu", + "lat": "41.31766", + "lon": "0.82526", + "id": 365845729, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Parròquia de Sant Bartomeu", + "lat": "41.36558", + "lon": "2.13993", + "id": 434957341, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "religion_christian": "christian" + } + }, + { + "name": "Parròquia de Sant Bartomeu", + "lat": "41.36558", + "lon": "2.13993", + "id": 434957341, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "religion_christian": "christian" + } + }, + { + "name": "Cal Bartomeu", + "lat": "41.41150", + "lon": "1.62267", + "id": 638360509, + "subType": "building", + "type": "man_made" + }, + { + "name": "Sant Bartomeu", + "lat": "42.59165", + "lon": "1.14919", + "id": 918469451, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "42.59165", + "lon": "1.14919", + "id": 918469451, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Esglesia de Sant Bartomeu", + "lat": "41.12553", + "lon": "0.73351", + "id": 8392486606, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Roc de Sant Bartomeu", + "lat": "42.45785", + "lon": "1.37662", + "id": 2483279296, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Coves de Bartomeu", + "lat": "40.58388", + "lon": "0.49745", + "id": 9431002076, + "subType": "cave_entrance", + "type": "natural" + }, + { + "name": "Collada de Sant Bartomeu", + "lat": "42.11591", + "lon": "2.36923", + "id": 10218636968, + "subType": "saddle", + "type": "natural", + "additionalInfo": { + "ele": "1251.9" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.44287", + "lon": "1.40528", + "id": 7959004006, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.29483", + "lon": "1.30596", + "id": 7723017360, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu del Grau", + "lat": "41.98385", + "lon": "2.17291", + "id": 843592333, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu del Grau", + "lat": "41.98385", + "lon": "2.17291", + "id": 843592333, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu d'Erta", + "lat": "42.42590", + "lon": "0.84369", + "id": 1569661771, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu d'Erta" + } + }, + { + "name": "Sant Bartomeu d'Erta", + "lat": "42.42590", + "lon": "0.84369", + "id": 1569661771, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu d'Erta" + } + }, + { + "name": "Baixada de Sant Bartomeu", + "lat": "42.43109", + "lon": "1.92945", + "id": 380780603, + "subType": "highway_steps", + "type": "transportation" + }, + { + "name": "Sant Bartomeu", + "lat": "41.99774", + "lon": "0.84477", + "id": 4413779894272, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Baronia de Sant Oïsme" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.99774", + "lon": "0.84477", + "id": 4413779894272, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de la Baronia de Sant Oïsme" + } + }, + { + "name": "Tossal de Sant Bartomeu", + "lat": "41.67410", + "lon": "0.53977", + "id": 2483336656, + "subType": "locality", + "type": "administrative" + }, + { + "name": "Bartomeu Robert", + "lat": "41.35378", + "lon": "2.15326", + "id": 4696518112, + "subType": "memorial", + "type": "tourism" + }, + { + "name": "Sant Bartomeu de Burg", + "lat": "42.50447", + "lon": "1.27216", + "id": 794417303, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "denomination_catholic": "catholic", + "building_type_church": "church", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Burg" + } + }, + { + "name": "Sant Bartomeu de Burg", + "lat": "42.50447", + "lon": "1.27216", + "id": 794417303, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "denomination_catholic": "catholic", + "building_type_church": "church", + "religion_christian": "christian", + "tourism_yes": "yes", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Burg" + } + }, + { + "name": "Capella de Sant Bartomeu", + "lat": "41.95946", + "lon": "2.66841", + "id": 1590434589, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Capella de Sant Bartomeu", + "lat": "41.95946", + "lon": "2.66841", + "id": 1590434589, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu de Llaés", + "lat": "42.15470", + "lon": "2.24838", + "id": 843966623, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Sant Bartomeu de Llaés", + "lat": "42.15470", + "lon": "2.24838", + "id": 843966623, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian" + } + }, + { + "name": "Frutería Casa Bartomeus - Tiendadefruta.es", + "lat": "41.73356", + "lon": "1.83158", + "id": 6585869656, + "subType": "greengrocer", + "type": "shop", + "additionalInfo": { + "wheelchair_yes": "yes", + "website": "https://www.tiendadefruta.es/", + "phone": "+34 93 8730959", + "description:es": "Tienda de fruta expertos en frutas tropicales y exóticas. Disponen de guanábana, mangostán, ñame, ..." + } + }, + { + "name": "Torrent de Sant Bartomeu", + "lat": "41.56515", + "lon": "2.33831", + "id": 454746319, + "subType": "stream", + "type": "natural" + }, + { + "name": "Sant Bartomeu de Carbasí", + "lat": "41.61024", + "lon": "1.43063", + "id": 1570663755, + "subType": "place_of_worship", + "type": "tourism", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Carbasí" + } + }, + { + "name": "Sant Bartomeu de Carbasí", + "lat": "41.61024", + "lon": "1.43063", + "id": 1570663755, + "subType": "building", + "type": "man_made", + "additionalInfo": { + "building_type_church": "church", + "denomination_catholic": "catholic", + "religion_christian": "christian", + "wikipedia": "http://ca.wikipedia.org/wiki/Sant Bartomeu de Carbasí" + } + }, + { + "name": "Sant Bartomeu", + "lat": "41.31775", + "lon": "0.82535", + "id": 3865575034, + "subType": "attraction", + "type": "tourism" + }, + { + "name": "Plaça de Sant Bartomeu", + "lat": "41.29449", + "lon": "1.30596", + "id": 1124433115, + "subType": "square", + "type": "man_made" + } + ], + "cities": [ + { + "name": "Arganda del Rey", + "lat": "40.30077", + "lon": "-3.43807", + "id": 256329511, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Fruitós de Bages", + "lat": "41.75327", + "lon": "1.87494", + "id": 1470839177, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Muntanyola", + "lat": "41.87693", + "lon": "2.17908", + "id": 1460478703, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Sant Bartomeu del Grau", + "lat": "41.95777", + "lon": "2.13628", + "id": 81162 + } + ], + "matchStreet": 1 + }, + { + "name": "Sant Joan de Vilatorrada", + "lat": "41.74221", + "lon": "1.80362", + "id": 1470839184, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Villanueva de la Cañada", + "lat": "40.44721", + "lon": "-4.00280", + "id": 269160430, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Lliçà de Vall", + "lat": "41.59155", + "lon": "2.24224", + "id": 1460478693, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Rosselló Porcel", + "lat": "41.60258", + "lon": "2.21767", + "id": 40502 + } + ], + "matchStreet": 1 + }, + { + "name": "Cambrils", + "lat": "41.06794", + "lon": "1.06576", + "id": 1470838172, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Masllorenç", + "lat": "41.27017", + "lon": "1.41449", + "id": 935240588, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu (Masarbonès)", + "lat": "41.25990", + "lon": "1.43844", + "id": 105689, + "intersectedStreets": [ + { + "name": "Carrer de Sant Antoni (Masarbonès)", + "lat": "41.25981", + "lon": "1.43687" + }, + { + "name": "Carrer Major (Masarbonès)", + "lat": "41.25989", + "lon": "1.43796" + }, + { + "name": "Carrer de Bonastre (Masarbonès)", + "lat": "41.25992", + "lon": "1.43848" + }, + { + "name": "Carrer de les Fassines (Masarbonès)", + "lat": "41.26018", + "lon": "1.43874" + }, + { + "name": "Plaça de l'Om (Masarbonès)", + "lat": "41.26040", + "lon": "1.43854" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Almacelles", + "lat": "41.72950", + "lon": "0.44048", + "id": 352498933, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Blanch 'lo Català'", + "lat": "41.72985", + "lon": "0.44291", + "id": 87670 + } + ], + "matchStreet": 1 + }, + { + "name": "Caldes de Montbui", + "names": { + "es": "Caldes de Montbui" + }, + "lat": "41.63227", + "lon": "2.16764", + "id": 1470838164, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sobremunt", + "lat": "42.03530", + "lon": "2.16516", + "id": 539466271, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí de St. Bartomeu al Sorreig", + "lat": "42.00629", + "lon": "2.17995", + "id": 122291 + } + ], + "matchStreet": 1 + }, + { + "name": "Calonge", + "lat": "41.86210", + "lon": "3.07723", + "id": 1470838168, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Bellmunt d'Urgell", + "lat": "41.77399", + "lon": "0.95381", + "id": 390491452, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Baixada de Sant Bartomeu", + "lat": "41.77357", + "lon": "0.95115", + "id": 96278, + "intersectedStreets": [ + { + "name": "Camí de Linyola", + "lat": "41.77341", + "lon": "0.95096" + }, + { + "name": "Avinguda de Domènec Cardenal", + "lat": "41.77347", + "lon": "0.95107" + }, + { + "name": "Carrer del Terral", + "lat": "41.77379", + "lon": "0.95148" + }, + { + "name": "Carrer del Bancal", + "lat": "41.77390", + "lon": "0.95184" + }, + { + "name": "Carrer de Barcelona", + "names": { + "ca": "carrer de Barcelona" + }, + "lat": "41.77411", + "lon": "0.95195" + }, + { + "name": "Carretera de Bellmunt d'Urgell", + "lat": "41.77214", + "lon": "0.95002" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Calella", + "lat": "41.61329", + "lon": "2.65761", + "id": 1470838165, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cervera", + "lat": "41.67680", + "lon": "1.27499", + "id": 9205876, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Ripollet", + "lat": "41.49934", + "lon": "2.15731", + "id": 3538816683, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "San Agustín del Guadalix", + "names": { + "ru": "Сан-Агустин-дель-Гвадаликс", + "uk": "Сан-Агустін-дель-Гуадалікс" + }, + "lat": "40.67905", + "lon": "-3.61660", + "id": 258640685, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Girona", + "names": { + "ast": "Xirona", + "be": "Жырона", + "ru": "Жирона", + "ko": "지로나", + "pt": "Gerunda", + "gl": "Xirona", + "el": "Ζιρόνα", + "lt": "Žirona", + "fr": "Gérone", + "an": "Chirona", + "es": "Gerona", + "zh": "赫罗纳", + "eu": "Girona", + "ar": "جرندة", + "oc": "Girona", + "uk": "Жірона", + "ja": "ジローナ", + "fa": "خرنا", + "he": "ז'ירונה", + "ca": "Girona", + "nl": "Gerona", + "sr": "Ђирона" + }, + "lat": "41.97930", + "lon": "2.81994", + "id": 30894545, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Tres Cantos", + "names": { + "ru": "Трес-Кантос", + "uk": "Трес-Кантос" + }, + "lat": "40.60658", + "lon": "-3.70653", + "id": 319938844, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Súria", + "lat": "41.83281", + "lon": "1.75266", + "id": 5045067902, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Palamós", + "lat": "41.84954", + "lon": "3.12788", + "id": 1470838632, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Andreu de la Barca", + "lat": "41.45182", + "lon": "1.97248", + "id": 1470839144, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Palafrugell", + "lat": "41.91836", + "lon": "3.16199", + "id": 1470838631, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Andreu de Llavaneres", + "names": { + "ca": "Sant Andreu de Llavaneres" + }, + "lat": "41.57395", + "lon": "2.48282", + "id": 1470839142, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Villaviciosa de Odón", + "lat": "40.35738", + "lon": "-3.90023", + "id": 306574423, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "San Martín de la Vega", + "lat": "40.21105", + "lon": "-3.57718", + "id": 4350968640, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Camallera", + "lat": "42.12271", + "lon": "2.96347", + "id": 365041119, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "42.12202", + "lon": "2.96408", + "id": 35207, + "intersectedStreets": [ + { + "name": "Carrer del Doctor Lluís Fàbrega", + "lat": "42.12202", + "lon": "2.96408" + }, + { + "name": "Carrer de Vicenç Bou", + "lat": "42.12142", + "lon": "2.96453" + }, + { + "name": "Carrer de l'Estació", + "lat": "42.12142", + "lon": "2.96453" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Tossa de Mar", + "names": { + "ca": "Tossa de Mar" + }, + "lat": "41.71978", + "lon": "2.93122", + "id": 331106659, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Mataró", + "names": { + "ar": "ماتارو", + "ru": "Матаро", + "uk": "Матаро", + "el": "Ματαρό", + "lt": "Mataro", + "ca": "Mataró", + "es": "Mataró" + }, + "lat": "41.53983", + "lon": "2.44489", + "id": 65523130, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Celoni", + "lat": "41.69014", + "lon": "2.49167", + "id": 1470839157, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Vielha", + "names": { + "oc": "Vielha", + "es": "Viella" + }, + "lat": "42.70176", + "lon": "0.79547", + "id": 1098278678, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Leganés", + "enName": "Leganés", + "names": { + "ru": "Леганес", + "uk": "Леганес", + "ja": "レガネス", + "hu": "Leganés", + "sr": "Леганес" + }, + "lat": "40.32819", + "lon": "-3.76527", + "id": 306524644, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cervera", + "lat": "41.67307", + "lon": "1.27294", + "id": 1470838211, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Viladecans", + "lat": "41.31631", + "lon": "2.01560", + "id": 2375518653, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Ponts", + "lat": "41.91601", + "lon": "1.18825", + "id": 1470838746, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Camí de Sant Bartomeu (el Tossal)", + "lat": "41.91443", + "lon": "1.15028", + "id": 110593, + "intersectedStreets": [ + { + "name": "Camí del Tossal (el Tossal)", + "lat": "41.91492", + "lon": "1.15232" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Cubelles", + "names": { + "ca": "Cubelles" + }, + "lat": "41.20834", + "lon": "1.67305", + "id": 1470838239, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Carles de la Ràpita", + "names": { + "ca": "Sant Carles de la Ràpita" + }, + "lat": "40.61766", + "lon": "0.58993", + "id": 1407801234, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Santa Coloma de Farners", + "lat": "41.86031", + "lon": "2.66590", + "id": 1470839251, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Colmenar Viejo", + "lat": "40.65879", + "lon": "-3.76632", + "id": 256291070, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cornellà de Llobregat", + "lat": "41.35572", + "lon": "2.07062", + "id": 1470838232, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Corbera de Llobregat", + "lat": "41.41662", + "lon": "1.93386", + "id": 1470838229, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Galapagar", + "lat": "40.57750", + "lon": "-4.00377", + "id": 4279257425, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cardona", + "lat": "41.91428", + "lon": "1.68133", + "id": 1470838186, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cardedeu", + "names": { + "ar": "كارديديو", + "uk": "Кардазеу", + "el": "Καρδεδέου" + }, + "lat": "41.63852", + "lon": "2.35584", + "id": 1470838185, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Vicenç dels Horts", + "lat": "41.39342", + "lon": "2.00995", + "id": 1470839216, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Pineda de Mar", + "lat": "41.62762", + "lon": "2.68976", + "id": 1470838702, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "l'Escala", + "names": { + "es": "La Escala" + }, + "lat": "42.11354", + "lon": "3.13874", + "id": 339019326, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Canet de Mar", + "lat": "41.59009", + "lon": "2.57780", + "id": 1470838178, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "San Sebastián de los Reyes", + "names": { + "ru": "Сан-Себастиан-де-лос-Рейес", + "uk": "Сан-Себастьян-де-лос-Реєс", + "lt": "San Sebastian de los Rejesas", + "es": "San Sebastián de los Reyes" + }, + "lat": "40.54737", + "lon": "-3.62606", + "id": 256150800, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Villanueva del Pardillo", + "lat": "40.49492", + "lon": "-3.96001", + "id": 254637858, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Antoni de Calonge", + "lat": "41.84727", + "lon": "3.10260", + "id": 338084408, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Castelldefels", + "lat": "41.28610", + "lon": "1.98242", + "id": 1470838201, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Òrrius", + "names": { + "ca": "Òrrius" + }, + "lat": "41.55519", + "lon": "2.35494", + "id": 1460478298, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí de Vilassar de Dalt a Sant Bartomeu", + "lat": "41.54631", + "lon": "2.34333", + "id": 56311, + "intersectedStreets": [ + { + "name": "Camí de Òrrius", + "lat": "41.54813", + "lon": "2.34120" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Alcobendas", + "names": { + "ar": "ألكوبينداس", + "ru": "Алькобендас", + "hu": "Alcobendas", + "sr": "Алкобендас" + }, + "lat": "40.54001", + "lon": "-3.63585", + "id": 256150802, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Agramunt", + "lat": "41.78767", + "lon": "1.09868", + "id": 1470837683, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Aiguaviva", + "lat": "41.35223", + "lon": "1.50317", + "id": 721174118, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Camí d'Aiguaviva a Mas Bartomeu", + "lat": "41.33443", + "lon": "1.49972", + "id": 25803 + } + ], + "matchStreet": 1 + }, + { + "name": "Navalcarnero", + "lat": "40.28772", + "lon": "-4.01430", + "id": 258123001, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Terrassa", + "names": { + "ar": "تاراسا", + "ru": "Террасса", + "el": "Τεράσα", + "lt": "Terasa", + "ca": "Terrassa", + "es": "Tarrasa", + "sr": "Тараса" + }, + "lat": "41.56299", + "lon": "2.01024", + "id": 288139569, + "type": "CITY", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Amat", + "lat": "41.57033", + "lon": "2.01221", + "id": 22750, + "intersectedStreets": [ + { + "name": "Passeig del Vint-i-dos de Juliol", + "names": { + "alt_name": "Pont de les Arenes (les Arenes)" + }, + "lat": "41.57033", + "lon": "2.01221" + }, + { + "name": "Carrer de Sant Leopold", + "lat": "41.57016", + "lon": "2.01217" + }, + { + "name": "Avinguda de l'Abat Marcet (Pere Parres)", + "lat": "41.57489", + "lon": "2.01219" + }, + { + "name": "Carrer de les Campiones olímpiques", + "lat": "41.57489", + "lon": "2.01219" + }, + { + "name": "Carrer de l'Autonomia (Sant Pere)", + "lat": "41.57393", + "lon": "2.01224" + }, + { + "name": "Carrer Transversal (Sant Pere)", + "lat": "41.57300", + "lon": "2.01228" + }, + { + "name": "Plaça del Triomf", + "lat": "41.57250", + "lon": "2.01228" + }, + { + "name": "Carrer de Catalunya (Sant Pere)", + "lat": "41.57173", + "lon": "2.01226" + }, + { + "name": "Carrer de Mossèn Pursals", + "lat": "41.57134", + "lon": "2.01226" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Castellbisbal", + "lat": "41.47651", + "lon": "1.98330", + "id": 1470838200, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Castellar del Vallès", + "lat": "41.61381", + "lon": "2.08760", + "id": 1470838199, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Mollerussa", + "lat": "41.63309", + "lon": "0.89549", + "id": 1470838540, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Solsona", + "lat": "41.99458", + "lon": "1.51840", + "id": 1954570210, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Avinguda de Sant Bartomeu", + "lat": "41.99840", + "lon": "1.52549", + "id": 68567, + "intersectedStreets": [ + { + "name": "Carrer del Turb", + "lat": "41.99557", + "lon": "1.52916" + }, + { + "name": "Carrer del Capolatell", + "lat": "41.99599", + "lon": "1.52873" + }, + { + "name": "Carrer de Busa", + "lat": "41.99640", + "lon": "1.52832" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Molins de Rei", + "names": { + "es": "Molins de Rei" + }, + "lat": "41.41381", + "lon": "2.01596", + "id": 1470838538, + "type": "TOWN", + "listOfStreets": [ + { + "name": "G-06 Sant Bartomeu - Can Planes - Les escletxes", + "lat": "41.42627", + "lon": "2.03408", + "id": 54004, + "intersectedStreets": [ + { + "name": "G-14 Cami de la Riera Nova a G-06", + "lat": "41.42712", + "lon": "2.03393" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Vilanova i la Geltrú", + "names": { + "ca": "Vilanova i la Geltrú", + "es": "Vilanova y Geltrú" + }, + "lat": "41.22420", + "lon": "1.72563", + "id": 1470839561, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Griñón", + "lat": "40.21366", + "lon": "-3.85815", + "id": 306948272, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "el Tossal", + "lat": "41.91560", + "lon": "1.15097", + "id": 6000716046, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí de Sant Bartomeu", + "lat": "41.91443", + "lon": "1.15030", + "id": 110594 + } + ], + "matchStreet": 1 + }, + { + "name": "Mollet del Vallès", + "lat": "41.53935", + "lon": "2.21309", + "id": 1470838541, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer del Doctor Bartomeu Robert", + "lat": "41.54199", + "lon": "2.21671", + "id": 81016, + "intersectedStreets": [ + { + "name": "Carrer del Carme", + "lat": "41.54265", + "lon": "2.21720" + }, + { + "name": "Carrer de Roger de Llúria", + "lat": "41.54194", + "lon": "2.21666" + } + ] + }, + { + "name": "Passatge Bartomeu Robert", + "lat": "41.54125", + "lon": "2.21608", + "id": 81527, + "intersectedStreets": [ + { + "name": "Carrer del Sol", + "lat": "41.54125", + "lon": "2.21608" + }, + { + "name": "Plaça de l'Artesania", + "lat": "41.54037", + "lon": "2.21499" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Lleida", + "names": { + "ar": "لاردة", + "ru": "Ллейда", + "oc": "Lhèida", + "el": "Λιέιδα", + "lt": "Lerida", + "fr": "Lérida", + "ca": "Lleida", + "es": "Lérida", + "sr": "Љеида" + }, + "lat": "41.61476", + "lon": "0.62678", + "id": 124083658, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Mollerussa", + "lat": "41.63360", + "lon": "0.89126", + "id": 10598414, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "San Lorenzo de El Escorial", + "lat": "40.59267", + "lon": "-4.14716", + "id": 64835892, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Montornès del Vallès", + "lat": "41.54255", + "lon": "2.26706", + "id": 1470838556, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Bartomeu", + "lat": "41.54066", + "lon": "2.26763", + "id": 108860, + "intersectedStreets": [ + { + "name": "Carrer de Sant Sadurní", + "lat": "41.54059", + "lon": "2.26677" + }, + { + "name": "Baixada de l'Església", + "lat": "41.54066", + "lon": "2.26763" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Montgat", + "lat": "41.46670", + "lon": "2.27897", + "id": 1470838553, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Móra d'Ebre", + "names": { + "ca": "Móra d'Ebre" + }, + "lat": "41.08934", + "lon": "0.64129", + "id": 1470838559, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sabadell", + "names": { + "ru": "Сабадель", + "el": "Σαβαδέλ", + "lt": "Sabadelis", + "ca": "Sabadell" + }, + "lat": "41.54210", + "lon": "2.11390", + "id": 252566396, + "type": "CITY", + "listOfStreets": [ + { + "name": "Carrer de Joan Bartomeu", + "lat": "41.52620", + "lon": "2.10800", + "id": 57906, + "intersectedStreets": [ + { + "name": "Carrer de Josep Guardiet", + "lat": "41.52604", + "lon": "2.10835" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Velilla de San Antonio", + "names": { + "ru": "Велилья-де-Сан-Антонио", + "uk": "Велілья-де-Сан-Антоніо", + "es": "Velilla de San Antonio" + }, + "lat": "40.36717", + "lon": "-3.48744", + "id": 311127037, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cabrera de Mar", + "lat": "41.52770", + "lon": "2.39251", + "id": 523051419, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.52744", + "lon": "2.40262", + "id": 134131, + "intersectedStreets": [ + { + "name": "carrer de Sant Sebastià", + "lat": "41.52680", + "lon": "2.40292" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Cassà de la Selva", + "lat": "41.88747", + "lon": "2.87425", + "id": 5417486419, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "el Pont de Suert", + "names": { + "el": "Ποντ ντε Σουέρτ", + "ca": "el Pont de Suert" + }, + "lat": "42.40761", + "lon": "0.74025", + "id": 151063417, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Collado Villalba", + "names": { + "ru": "Кольядо-Вильяльба", + "uk": "Кольядо-Вільяльба" + }, + "lat": "40.64301", + "lon": "-3.99273", + "id": 256407477, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Manresa", + "names": { + "ru": "Манреса", + "ja": "マンレザ" + }, + "lat": "41.72889", + "lon": "1.82868", + "id": 1470838508, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu (Les Escodines)", + "lat": "41.72261", + "lon": "1.82989", + "id": 83012, + "intersectedStreets": [ + { + "name": "Carrer de les Escodines (Les Escodines)", + "lat": "41.72296", + "lon": "1.82912" + }, + { + "name": "Carrer de l'Aiguader (Les Escodines)", + "lat": "41.72261", + "lon": "1.82989" + }, + { + "name": "Carrer Nou de Santa Clara (Les Escodines)", + "lat": "41.72237", + "lon": "1.83070" + }, + { + "name": "Carrer dels Caputxins (Les Escodines)", + "lat": "41.72237", + "lon": "1.83070" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Manlleu", + "lat": "41.99998", + "lon": "2.28412", + "id": 1470838507, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Villarejo de Salvanés", + "lat": "40.16836", + "lon": "-3.27388", + "id": 249871398, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Arroyomolinos", + "enName": "Arroyomolinos", + "names": { + "ru": "Арройомолинос", + "uk": "Арройомолінос", + "ja": "アロヨモリノス" + }, + "lat": "40.27292", + "lon": "-3.91580", + "id": 311114762, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Torrelodones", + "names": { + "ru": "Торрелодонес", + "uk": "Торрелодонес" + }, + "lat": "40.57628", + "lon": "-3.92860", + "id": 255328636, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Valls", + "names": { + "ru": "Вальс", + "uk": "Бальш" + }, + "lat": "41.28354", + "lon": "1.24736", + "id": 1470839529, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Vic", + "enName": "Vic", + "names": { + "ca": "Vic", + "es": "Vic", + "zh": "比克" + }, + "lat": "41.93020", + "lon": "2.25459", + "id": 1470839536, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu del Grau", + "lat": "41.93676", + "lon": "2.24741", + "id": 58467 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Arbúcies", + "names": { + "ar": "أربوثياس" + }, + "lat": "41.81606", + "lon": "2.51415", + "id": 1470837987, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sevilla la Nueva", + "lat": "40.34754", + "lon": "-4.02753", + "id": 309167783, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "El Escorial", + "lat": "40.58364", + "lon": "-4.12814", + "id": 64835924, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Coll de Nargó", + "lat": "42.17391", + "lon": "1.31613", + "id": 262635753, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "42.17490", + "lon": "1.31784", + "id": 90301, + "intersectedStreets": [ + { + "name": "Plaça del Cap del Roc", + "lat": "42.17497", + "lon": "1.31767" + }, + { + "name": "Carrer de la Rosa", + "lat": "42.17444", + "lon": "1.31716" + }, + { + "name": "La Costerota", + "lat": "42.17468", + "lon": "1.31761" + }, + { + "name": "Carrer Hospital", + "lat": "42.17479", + "lon": "1.31767" + }, + { + "name": "Camí Estret", + "lat": "42.17382", + "lon": "1.31628" + }, + { + "name": "Carrer de la Carretera Nova", + "lat": "42.17382", + "lon": "1.31628" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Vilafranca del Penedès", + "names": { + "ca": "Vilafranca del Penedès" + }, + "lat": "41.34638", + "lon": "1.69952", + "id": 1470839547, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Brunete", + "lat": "40.40505", + "lon": "-3.99799", + "id": 256477660, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Humanes de Madrid", + "enName": "Humanes de Madrid", + "names": { + "ru": "Уманес-де-Мадрид", + "ja": "ウマネス・デ・マドリード", + "zh": "乌马内斯德马德里德" + }, + "lat": "40.25088", + "lon": "-3.82710", + "id": 306946784, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Alpedrete", + "lat": "40.65990", + "lon": "-4.02512", + "id": 64835913, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Badia del Vallès", + "lat": "41.50782", + "lon": "2.11534", + "id": 2794611208, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Argentona", + "lat": "41.55543", + "lon": "2.40028", + "id": 1470838014, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "la Bisbal del Penedès", + "lat": "41.27784", + "lon": "1.49056", + "id": 331028206, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí de Mas Bartomeu", + "lat": "41.31413", + "lon": "1.51637", + "id": 25250, + "intersectedStreets": [ + { + "name": "Camí de la Costa (el Papagai)", + "lat": "41.29803", + "lon": "1.50905" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Arenys de Mar", + "lat": "41.57970", + "lon": "2.54916", + "id": 1470838013, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Vilanova del Camí", + "lat": "41.57143", + "lon": "1.63614", + "id": 1470839540, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Martorell", + "lat": "41.47692", + "lon": "1.92840", + "id": 1470838514, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.47494", + "lon": "1.93668", + "id": 34900, + "intersectedStreets": [ + { + "name": "Carretera de Terrassa", + "lat": "41.47436", + "lon": "1.93692" + }, + { + "name": "Passeig Quarter", + "lat": "41.47494", + "lon": "1.93668" + }, + { + "name": "Passeig del Quarter", + "lat": "41.47494", + "lon": "1.93668" + }, + { + "name": "Carrer d'Àngela Benaca", + "lat": "41.47516", + "lon": "1.93660" + }, + { + "name": "Carrer del Riu", + "lat": "41.47539", + "lon": "1.93651" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Vila-seca", + "lat": "41.10915", + "lon": "1.14649", + "id": 1470839538, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "l'Ametlla del Vallès", + "lat": "41.66933", + "lon": "2.26145", + "id": 393906088, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Sant Bartomeu", + "lat": "41.69352", + "lon": "2.24520", + "id": 45384, + "intersectedStreets": [ + { + "name": "Carrer d'Albeniz", + "lat": "41.69068", + "lon": "2.24797" + }, + { + "name": "Carrer d'Amadeu Vives", + "lat": "41.69099", + "lon": "2.24756" + }, + { + "name": "Carrer de la Cardenera", + "lat": "41.69354", + "lon": "2.24520" + }, + { + "name": "Carrer d'Apel·les Mestres", + "lat": "41.69418", + "lon": "2.24419" + }, + { + "name": "Carrer de Tomás Breton", + "lat": "41.69666", + "lon": "2.23786" + }, + { + "name": "Carrer de Tarragó", + "lat": "41.69624", + "lon": "2.23598" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Vilassar de Mar", + "names": { + "ca": "Vilassar de Mar", + "es": "Vilasar de Mar" + }, + "lat": "41.50640", + "lon": "2.39139", + "id": 1470839541, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Santa Oliva", + "lat": "41.25329", + "lon": "1.55101", + "id": 388127102, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.23670", + "lon": "1.54313", + "id": 95166, + "intersectedStreets": [ + { + "name": "Avinguda de Nostra Senyora del Pilar", + "lat": "41.23622", + "lon": "1.54287" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Montellà", + "lat": "42.35448", + "lon": "1.70488", + "id": 1035806046, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Pista de San t Bartomeu - GR 150", + "lat": "42.34938", + "lon": "1.69994", + "id": 116709 + } + ], + "matchStreet": 1 + }, + { + "name": "Navarcles", + "lat": "41.75316", + "lon": "1.90336", + "id": 1470838604, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.75351", + "lon": "1.90506", + "id": 72318, + "intersectedStreets": [ + { + "name": "Passeig d'Àngel Vivó", + "lat": "41.75347", + "lon": "1.90503" + }, + { + "name": "Passeig de les Fonts", + "lat": "41.75347", + "lon": "1.90503" + }, + { + "name": "Carrer de la Sardana", + "lat": "41.75550", + "lon": "1.90696" + }, + { + "name": "Carrer de la Renaixença", + "lat": "41.75561", + "lon": "1.90701" + }, + { + "name": "Carrer de la Font de la Cura", + "lat": "41.75561", + "lon": "1.90701" + }, + { + "name": "Carrer del Bages", + "lat": "41.75383", + "lon": "1.90508" + }, + { + "name": "Carrer de Tarragona", + "names": { + "ca": "Carrer de Tarragona" + }, + "lat": "41.75439", + "lon": "1.90546" + }, + { + "name": "Carrer de Lleida", + "names": { + "ca": "carrer de Lleida" + }, + "lat": "41.75454", + "lon": "1.90563" + }, + { + "name": "Carrer de Girona", + "lat": "41.75476", + "lon": "1.90598" + }, + { + "name": "Passatge de Badalona", + "lat": "41.75492", + "lon": "1.90626" + }, + { + "name": "Carrer Badalona", + "lat": "41.75507", + "lon": "1.90649" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Mas de Bondia", + "lat": "41.60545", + "lon": "1.19076", + "id": 2457882661, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.60509", + "lon": "1.19298", + "id": 101922 + } + ], + "matchStreet": 1 + }, + { + "name": "Montcada i Reixac", + "lat": "41.48231", + "lon": "2.18700", + "id": 427061659, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Banyoles", + "names": { + "ca": "Banyoles" + }, + "lat": "42.11805", + "lon": "2.76536", + "id": 1470838085, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Coslada", + "lat": "40.42380", + "lon": "-3.55529", + "id": 264240976, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Olot", + "lat": "42.18222", + "lon": "2.48902", + "id": 1470838619, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Casserres", + "names": { + "es": "Casserres" + }, + "lat": "42.01382", + "lon": "1.84304", + "id": 303713456, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer Sant Bartomeu", + "lat": "42.01378", + "lon": "1.84195", + "id": 34434, + "intersectedStreets": [ + { + "name": "Carrer de la Creu", + "lat": "42.01393", + "lon": "1.84216" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Blanes", + "names": { + "ru": "Бланес" + }, + "lat": "41.67562", + "lon": "2.79324", + "id": 1470838110, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Sant Bartomeu", + "lat": "41.68081", + "lon": "2.78145", + "id": 31366, + "intersectedStreets": [ + { + "name": "Carrer del Bosc", + "lat": "41.68041", + "lon": "2.78224" + }, + { + "name": "Carrer Josep Maria de Segarra", + "lat": "41.68081", + "lon": "2.78145" + }, + { + "name": "Carrer Prudenci Bertrana", + "lat": "41.68081", + "lon": "2.78145" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Villanueva de la Torre", + "lat": "40.58309", + "lon": "-3.29936", + "id": 1456260091, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Esplugues de Llobregat", + "lat": "41.37768", + "lon": "2.08997", + "id": 1460478908, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Bermejo", + "lat": "41.38677", + "lon": "2.08946", + "id": 7658, + "intersectedStreets": [ + { + "name": "Avinguda de la Mestra Dolors Barceló", + "lat": "41.38640", + "lon": "2.08993" + }, + { + "name": "Carrer de Pau Vergós", + "lat": "41.38697", + "lon": "2.09150" + }, + { + "name": "Carrer de Ferrer Bassa (Ciutat Diagonal)", + "lat": "41.38697", + "lon": "2.09150" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Majadahonda", + "lat": "40.47306", + "lon": "-3.87241", + "id": 256456063, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Berga", + "lat": "42.10115", + "lon": "1.84548", + "id": 1470838103, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Camí de Sant Bartomeu (la Valldan)", + "lat": "42.09442", + "lon": "1.82216", + "id": 22894, + "intersectedStreets": [ + { + "name": "Camí de Serra Farriols", + "lat": "42.09612", + "lon": "1.82062" + }, + { + "name": "carrer Germans Farguell", + "lat": "42.09466", + "lon": "1.82195" + }, + { + "name": "carrer dels Germans Farguell", + "lat": "42.09442", + "lon": "1.82216" + }, + { + "name": "carrer Bernat Sala", + "lat": "42.09337", + "lon": "1.82309" + }, + { + "name": "Camí de Garreta", + "lat": "42.08999", + "lon": "1.82815" + }, + { + "name": "Carretera de Solsona", + "lat": "42.08993", + "lon": "1.83051" + }, + { + "name": "Carrer del Camí de Cardona", + "lat": "42.09295", + "lon": "1.83504" + }, + { + "name": "Carrer de Fontcaldes", + "lat": "42.09039", + "lon": "1.82579" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Montblanc", + "lat": "41.37623", + "lon": "1.16207", + "id": 331949813, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Olesa de Montserrat", + "lat": "41.54305", + "lon": "1.89319", + "id": 1470838615, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Pozuelo de Alarcón", + "lat": "40.43465", + "lon": "-3.81483", + "id": 256455561, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Artés", + "lat": "41.79867", + "lon": "1.95489", + "id": 1470838058, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Valdemoro", + "names": { + "ru": "Вальдеморо" + }, + "lat": "40.18880", + "lon": "-3.67162", + "id": 308218525, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Boadilla del Monte", + "lat": "40.40535", + "lon": "-3.87647", + "id": 256551822, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Bartomeu del Grau", + "lat": "41.98077", + "lon": "2.17504", + "id": 550042626, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí de Sant Genís", + "lat": "41.97583", + "lon": "2.14111", + "id": 121621 + }, + { + "name": "Carrer Llevant", + "lat": "41.98452", + "lon": "2.17699", + "id": 91662 + }, + { + "name": "Carrer Nou", + "lat": "41.98372", + "lon": "2.17089", + "id": 91661 + }, + { + "name": "Carrer Tres Creus", + "lat": "41.98052", + "lon": "2.17731", + "id": 96366 + }, + { + "name": "Carrer de Vic", + "lat": "41.98061", + "lon": "2.17654", + "id": 125251 + }, + { + "name": "Carrer de la Tramuntana", + "lat": "41.98219", + "lon": "2.19076", + "id": 121637 + }, + { + "name": "Carrer del Garbí", + "lat": "41.98184", + "lon": "2.19044", + "id": 91666 + }, + { + "name": "Carrer del Gregal", + "lat": "41.98195", + "lon": "2.19055", + "id": 91667 + }, + { + "name": "Carrer del Mig", + "lat": "41.98155", + "lon": "2.17630", + "id": 91668 + }, + { + "name": "Carrer del Xaloc", + "lat": "41.98277", + "lon": "2.19126", + "id": 91665 + }, + { + "name": "Carretera de Sant Bartomeu", + "lat": "41.97446", + "lon": "2.17682", + "id": 79220 + }, + { + "name": "Carretera de Sant Bartomeu del Grau", + "names": { + "alt_name": "Camí de les Farreres" + }, + "lat": "41.97414", + "lon": "2.14622", + "id": 55369 + }, + { + "name": "Carretera del Cementiri", + "lat": "41.97994", + "lon": "2.18340", + "id": 91670 + }, + { + "name": "Eix Transversal", + "names": { + "es": "eje transversal" + }, + "lat": "41.93309", + "lon": "2.16735", + "id": 90386 + }, + { + "name": "GR 3", + "lat": "41.98010", + "lon": "2.16776", + "id": 55366 + }, + { + "name": "carrer Ponent", + "names": { + "ca": "carrer de Ponent" + }, + "lat": "41.98063", + "lon": "2.17435", + "id": 105163 + }, + { + "name": "carrer Vell", + "lat": "41.98249", + "lon": "2.17388", + "id": 19061 + }, + { + "name": "carrer de Dalt", + "lat": "41.98178", + "lon": "2.17564", + "id": 105164 + }, + { + "name": "Camí d'Alboquers (Pere-riera)", + "lat": "41.93153", + "lon": "2.13051", + "id": 112325 + }, + { + "name": "Camí de St. Bartomeu al Sorreig (Xalet Mas Reig)", + "lat": "41.98958", + "lon": "2.16821", + "id": 111514 + }, + { + "name": "Carrer de la Codina (Xalet Mas Reig)", + "lat": "41.98738", + "lon": "2.16695", + "id": 91664 + }, + { + "name": "Túnel de la Fontfreda (Pere-riera)", + "lat": "41.91702", + "lon": "2.13495", + "id": 90385 + }, + { + "name": "", + "lat": "41.98028", + "lon": "2.17767", + "id": 96365 + }, + { + "name": "Camí de Ca la Burra", + "lat": "41.92538", + "lon": "2.13864", + "id": 114618 + }, + { + "name": "Camí de Rogers", + "lat": "41.97493", + "lon": "2.17115", + "id": 49207 + }, + { + "name": "Carrer Pla de l'Oratori", + "lat": "41.98100", + "lon": "2.17669", + "id": 105166 + }, + { + "name": "Carrer de la Migjorn", + "lat": "41.98157", + "lon": "2.19141", + "id": 121636 + }, + { + "name": "Eix Transversal C-25 Viaducte de Pere-riera", + "lat": "41.92259", + "lon": "2.14062", + "id": 90387 + }, + { + "name": "Passeig del Grau", + "lat": "41.97996", + "lon": "2.17731", + "id": 96367 + }, + { + "name": "Plaça del Doctor Griera", + "lat": "41.98120", + "lon": "2.17478", + "id": 105165 + } + ], + "matchCity": 1, + "matchStreet": 1 + }, + { + "name": "Artesa de Segre", + "lat": "41.89629", + "lon": "1.04711", + "id": 1470838054, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Alcorcón", + "enName": "Alcorcón", + "names": { + "ru": "Алькоркон", + "uk": "Алькоркон", + "ja": "アルコルコン", + "lt": "Alkorkonas", + "hu": "Alcorcón", + "zh": "阿尔科尔孔", + "sr": "Алкоркон" + }, + "lat": "40.34930", + "lon": "-3.82843", + "id": 306524300, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Balaguer", + "lat": "41.78972", + "lon": "0.80549", + "id": 1470838076, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Fuenlabrada", + "enName": "Fuenlabrada", + "names": { + "ru": "Фуэнлабрада", + "uk": "Фуенлабрада", + "ja": "フエンラブラダ", + "hu": "Fuenlabrada", + "zh": "丰拉夫拉达", + "sr": "Фуенлабрада" + }, + "lat": "40.28248", + "lon": "-3.79234", + "id": 305072315, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Pinto", + "enName": "Pinto", + "names": { + "ru": "Пинто", + "ja": "ピント" + }, + "lat": "40.24099", + "lon": "-3.70051", + "id": 306620052, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Boi de Lluçanès", + "lat": "42.05784", + "lon": "2.15111", + "id": 539465394, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí ramader de Sant Bartomeu", + "names": { + "alt_name": "Camí de Vernera" + }, + "lat": "42.02972", + "lon": "2.13703", + "id": 91597 + } + ], + "matchStreet": 1 + }, + { + "name": "Canovelles", + "names": { + "ca": "Canovelles" + }, + "lat": "41.61739", + "lon": "2.28288", + "id": 1460478422, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Bartomeu Brufalt", + "lat": "41.61608", + "lon": "2.29569", + "id": 56296, + "intersectedStreets": [ + { + "name": "Carrer de Provença", + "lat": "41.61657", + "lon": "2.29584" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Rubí", + "lat": "41.49362", + "lon": "2.03195", + "id": 3248338760, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Santa Susanna", + "names": { + "ca": "Santa Susanna" + }, + "lat": "41.63573", + "lon": "2.70659", + "id": 571272919, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "carrer del Doctor Bartomeu", + "lat": "41.63463", + "lon": "2.70579", + "id": 73937, + "intersectedStreets": [ + { + "name": "Rambla Onze de Setembre", + "lat": "41.63419", + "lon": "2.70594" + }, + { + "name": "Carrer Josep Pla", + "lat": "41.63463", + "lon": "2.70579" + }, + { + "name": "Carrer Jaume Ir", + "lat": "41.63511", + "lon": "2.70560" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Igualada", + "names": { + "ru": "Игуалада" + }, + "lat": "41.57902", + "lon": "1.61735", + "id": 1470838412, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.57823", + "lon": "1.61905", + "id": 84219, + "intersectedStreets": [ + { + "name": "Carrer de Sant Jaume", + "lat": "41.57828", + "lon": "1.61872" + }, + { + "name": "Carrer de Custiol", + "lat": "41.57828", + "lon": "1.61872" + }, + { + "name": "Carreró de Sant Jaume", + "lat": "41.57828", + "lon": "1.61872" + }, + { + "name": "Plaça del Rei", + "lat": "41.57821", + "lon": "1.61956" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Valdemorillo", + "lat": "40.50168", + "lon": "-4.06889", + "id": 26541174, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Porqueres", + "names": { + "es": "Porqueras" + }, + "lat": "42.12139", + "lon": "2.74786", + "id": 3302537661, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Camí de Sant Bartomeu de Matamala", + "lat": "42.12680", + "lon": "2.72392", + "id": 108826 + } + ], + "matchStreet": 1 + }, + { + "name": "Massalcoreig", + "lat": "41.45918", + "lon": "0.35965", + "id": 865313399, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Travessia de Sant Bartomeu", + "lat": "41.45995", + "lon": "0.36036", + "id": 123119 + }, + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.46095", + "lon": "0.36377", + "id": 123151 + } + ], + "matchStreet": 1 + }, + { + "name": "Guadarrama", + "lat": "40.67345", + "lon": "-4.08939", + "id": 283475406, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Daganzo de Arriba", + "lat": "40.54520", + "lon": "-3.45785", + "id": 255463444, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Meco", + "lat": "40.55375", + "lon": "-3.32816", + "id": 310569328, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Parla", + "names": { + "ar": "بارلا", + "ru": "Парла", + "uk": "Парла", + "el": "Πάρλα", + "ja": "パルラ", + "fa": "پارلا", + "hu": "Parla", + "ur": "پرلا", + "zh": "帕尔拉", + "sr": "Парла" + }, + "lat": "40.23740", + "lon": "-3.77189", + "id": 306620202, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Pere de Ribes", + "names": { + "ca": "Sant Pere de Ribes" + }, + "lat": "41.26192", + "lon": "1.77214", + "id": 1470838938, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "la Bisbal d'Empordà", + "lat": "41.95987", + "lon": "3.03962", + "id": 1470838432, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Pere Bartomeu", + "lat": "41.95708", + "lon": "3.03742", + "id": 67806 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Sitges", + "lat": "41.23667", + "lon": "1.82281", + "id": 1470839456, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Passeig de Bartomeu Soler", + "lat": "41.24569", + "lon": "1.80002", + "id": 90642, + "intersectedStreets": [ + { + "name": "Passeig de Sant Dídac", + "lat": "41.24695", + "lon": "1.80152" + }, + { + "name": "Passeig del Fondac", + "lat": "41.24459", + "lon": "1.79714" + } + ] + }, + { + "name": "Carrer Bartomeu Robert", + "lat": "41.22941", + "lon": "1.78884", + "id": 28471, + "intersectedStreets": [ + { + "name": "Avinguda de Navarra", + "lat": "41.22930", + "lon": "1.78777" + }, + { + "name": "Carrer Ferran Casablancas", + "lat": "41.22930", + "lon": "1.78777" + }, + { + "name": "Carrer de Josep Planas Robert (Alt Vinyet)", + "lat": "41.22941", + "lon": "1.78884" + }, + { + "name": "Carrer de Balmes", + "names": { + "ca": "Carrer de Balmes" + }, + "lat": "41.22952", + "lon": "1.78996" + }, + { + "name": "Carrer del Pintor Roig i Soler (Alt Vinyet)", + "lat": "41.22952", + "lon": "1.78996" + } + ] + }, + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.23758", + "lon": "1.80899", + "id": 28352, + "intersectedStreets": [ + { + "name": "Carrer Jesús", + "lat": "41.23682", + "lon": "1.80978" + }, + { + "name": "Carrer de Sant Gaudenci", + "lat": "41.23758", + "lon": "1.80899" + }, + { + "name": "Avinguda d'Artur Carbonell", + "lat": "41.23854", + "lon": "1.80796" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Sils", + "lat": "41.80894", + "lon": "2.74147", + "id": 1470839455, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Cerdanyola del Vallès", + "lat": "41.49103", + "lon": "2.13750", + "id": 1470839444, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Avinguda de Bartomeu", + "lat": "41.50070", + "lon": "2.08863", + "id": 86367, + "intersectedStreets": [ + { + "name": "Carretera de Bellaterra", + "lat": "41.50078", + "lon": "2.08678" + }, + { + "name": "Carrer del Mestre Nicolau (Bellaterra)", + "lat": "41.50085", + "lon": "2.08676" + }, + { + "name": "Camí de la Font de la Bonaigua", + "lat": "41.50078", + "lon": "2.08794" + }, + { + "name": "Carrer de Ramon Llull (Bellaterra)", + "lat": "41.50085", + "lon": "2.08903" + }, + { + "name": "Avinguda de Joan Fàbregas", + "lat": "41.50117", + "lon": "2.09036" + }, + { + "name": "Avinguda de Josep Maria Marcet", + "lat": "41.50117", + "lon": "2.09036" + }, + { + "name": "Carrer de Terranova", + "lat": "41.49759", + "lon": "2.08652" + }, + { + "name": "Carrer de la Bonaigua (Bellaterra)", + "lat": "41.49914", + "lon": "2.08811" + }, + { + "name": "Carrer del Pintor Fortuny (Bellaterra)", + "lat": "41.49914", + "lon": "2.08811" + }, + { + "name": "Carrer d'Octavi Bruix", + "lat": "41.49966", + "lon": "2.08708" + }, + { + "name": "Carrer de Casas i Amigó (Bellaterra)", + "lat": "41.50006", + "lon": "2.08693" + } + ] + }, + { + "name": "Avinguda Bartomeu", + "lat": "41.49930", + "lon": "2.08798", + "id": 3263 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Moralzarzal", + "lat": "40.67914", + "lon": "-3.97210", + "id": 256406580, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "la Seu d'Urgell", + "names": { + "ru": "Сео-де-Уржель", + "uk": "Ла-Сеу-д'Уржель", + "ca": "la Seu d'Urgell", + "es": "Seo de Urgel" + }, + "lat": "42.35757", + "lon": "1.45601", + "id": 1470839447, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Parets del Vallès", + "lat": "41.57299", + "lon": "2.23293", + "id": 395368559, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Torrejón de Ardoz", + "names": { + "ru": "Торрехон-де-Ардос", + "uk": "Торрехон-де-Ардос", + "lt": "Torechon de Ardosas", + "hu": "Torrejón de Ardoz", + "es": "Torrejón de Ardoz", + "sr": "Торехон де Ардос" + }, + "lat": "40.45878", + "lon": "-3.47933", + "id": 230421116, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Fontcoberta", + "lat": "42.14254", + "lon": "2.78978", + "id": 1460477966, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Camí de Sant Bartomeu", + "lat": "42.12563", + "lon": "2.81407", + "id": 130778 + } + ], + "matchStreet": 1 + }, + { + "name": "Deltebre", + "names": { + "fr": "Deltèbre", + "ca": "Deltebre", + "es": "Deltebre" + }, + "lat": "40.72039", + "lon": "0.72434", + "id": 2055370119, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Rivas Vaciamadrid", + "names": { + "ru": "Ривас-Васиамадрид", + "uk": "Рівас-Васіамадрид" + }, + "lat": "40.35361", + "lon": "-3.53109", + "id": 311129997, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Joan les Fonts", + "lat": "42.21330", + "lon": "2.51343", + "id": 260446338, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer Mossèn Bartomeu", + "lat": "42.21457", + "lon": "2.51372", + "id": 67149 + } + ], + "matchStreet": 1 + }, + { + "name": "Esparreguera", + "lat": "41.53933", + "lon": "1.86945", + "id": 1460478465, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Just Desvern", + "lat": "41.38158", + "lon": "2.07507", + "id": 1470838887, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Getafe", + "enName": "Getafe", + "names": { + "ru": "Хетафе", + "ja": "ヘタフェ", + "hu": "Getafe", + "zh": "赫塔费" + }, + "lat": "40.30818", + "lon": "-3.73027", + "id": 2697472985, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Barberà del Vallès", + "lat": "41.51725", + "lon": "2.12659", + "id": 1460477981, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Alió", + "lat": "41.29359", + "lon": "1.30627", + "id": 1460477969, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Plaça de Sant Bartomeu", + "lat": "41.29462", + "lon": "1.30568", + "id": 88748, + "intersectedStreets": [ + { + "name": "Plaça Nova", + "lat": "41.29459", + "lon": "1.30613" + }, + { + "name": "Carrer Major", + "lat": "41.29462", + "lon": "1.30568" + }, + { + "name": "Carrer del Pou", + "lat": "41.29478", + "lon": "1.30557" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Montornès de Segarra", + "lat": "41.60095", + "lon": "1.23120", + "id": 1460477972, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu (Mas de Bondia)", + "lat": "41.60508", + "lon": "1.19296", + "id": 101921 + } + ], + "matchStreet": 1 + }, + { + "name": "Santa Coloma de Gramenet", + "names": { + "ru": "Санта-Колома-де-Граменет" + }, + "lat": "41.45156", + "lon": "2.20834", + "id": 346353020, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Feliu de Llobregat", + "lat": "41.38129", + "lon": "2.04464", + "id": 1389000150, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Lloret de Mar", + "names": { + "ru": "Льорет де Мар" + }, + "lat": "41.69735", + "lon": "2.83924", + "id": 1470838480, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.69990", + "lon": "2.84896", + "id": 64875, + "intersectedStreets": [ + { + "name": "Carrer de la Vila", + "lat": "41.69990", + "lon": "2.84896" + }, + { + "name": "Passeig de Jacint Verdaguer", + "lat": "41.69935", + "lon": "2.84932" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Sant Bartomeu de la Quadra", + "lat": "41.42594", + "lon": "2.03766", + "id": 2151992546, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de l'Església", + "lat": "41.42596", + "lon": "2.03788", + "id": 118868 + }, + { + "name": "Carrer de la Font Fresca", + "lat": "41.42667", + "lon": "2.04047", + "id": 107069 + }, + { + "name": "Carrer del Bosc", + "lat": "41.42841", + "lon": "2.03880", + "id": 107063 + }, + { + "name": "Carrer del Canigó", + "lat": "41.42797", + "lon": "2.03891", + "id": 107065 + }, + { + "name": "Carretera Veïnal de Molins de Rei a Vallvidrera", + "lat": "41.42617", + "lon": "2.03665", + "id": 129706 + }, + { + "name": "Antic Camí de l'Església", + "lat": "41.42580", + "lon": "2.03745", + "id": 118866 + }, + { + "name": "Carrer de la Pepeta de Cal Bardissa", + "lat": "41.42653", + "lon": "2.03850", + "id": 86088 + }, + { + "name": "Carrer de les Penyes d'en Castellví", + "lat": "41.43042", + "lon": "2.03856", + "id": 107067 + }, + { + "name": "Carrer del Turó del Quirze", + "lat": "41.42707", + "lon": "2.04017", + "id": 86086 + }, + { + "name": "Carretera de la Rierada", + "lat": "41.42752", + "lon": "2.04015", + "id": 92335 + } + ], + "matchCity": 1 + }, + { + "name": "Tarragona", + "names": { + "be": "Тарагона", + "ru": "Таррагона", + "ko": "타라고나", + "el": "Ταρραγόνα", + "lt": "Taragona", + "fr": "Tarragone", + "es": "Tarragona", + "zh": "塔拉戈纳", + "ar": "طراغونة", + "oc": "Tarragona", + "la": "Tarraco", + "uk": "Таррагона", + "ja": "タラゴナ", + "fa": "تاراگونا", + "he": "טרגונה", + "sr": "Тарагона" + }, + "lat": "41.11724", + "lon": "1.25461", + "id": 152377920, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Torelló", + "lat": "42.04783", + "lon": "2.26434", + "id": 1470839496, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Sant Bartomeu", + "lat": "42.04652", + "lon": "2.26550", + "id": 107577, + "intersectedStreets": [ + { + "name": "Carrer dels Estudis", + "lat": "42.04728", + "lon": "2.26454" + }, + { + "name": "carrer Sant Miquel", + "lat": "42.04728", + "lon": "2.26454" + }, + { + "name": "Carrer de Capsavila", + "lat": "42.04728", + "lon": "2.26454" + }, + { + "name": "Carreró de la Torrentera", + "lat": "42.04641", + "lon": "2.26567" + }, + { + "name": "Carrer Puigdassalit", + "lat": "42.04612", + "lon": "2.26610" + }, + { + "name": "Carrer Diputació", + "lat": "42.04509", + "lon": "2.26754" + }, + { + "name": "carrer Manlleu", + "lat": "42.04509", + "lon": "2.26754" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Aranjuez", + "lat": "40.03221", + "lon": "-3.60396", + "id": 252751393, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Masies de Sansuies", + "lat": "41.30747", + "lon": "1.48370", + "id": 4864470659, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Camí de Mas Bartomeu", + "lat": "41.32017", + "lon": "1.49697", + "id": 122234 + }, + { + "name": "Camí del Coll d'Arca a Mas Bartomeu", + "lat": "41.32517", + "lon": "1.48665", + "id": 108931, + "intersectedStreets": [ + { + "name": "Camí d'Aiguaviva a Mas Bartomeu", + "lat": "41.32228", + "lon": "1.49401" + } + ] + }, + { + "name": "Camí d'Aiguaviva a Mas Bartomeu", + "lat": "41.32467", + "lon": "1.49702", + "id": 25801, + "intersectedStreets": [ + { + "name": "Camí del Coll d'Arca a Mas Bartomeu", + "lat": "41.32228", + "lon": "1.49401" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Tàrrega", + "lat": "41.64728", + "lon": "1.14091", + "id": 1470839515, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Platja d'Aro", + "names": { + "ru": "Кастель-Пладжа-де-Аро", + "uk": "Кастель-Платжа-д'Ару", + "lt": "Kastiljo de Aras", + "es": "Playa de Aro" + }, + "lat": "41.81847", + "lon": "3.06880", + "id": 290730984, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Torroella de Montgrí", + "lat": "42.04098", + "lon": "3.12620", + "id": 1470839507, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Tortosa", + "lat": "40.81102", + "lon": "0.52093", + "id": 1470839509, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Passeig de Mossèn Valls Bartomeu", + "lat": "40.82737", + "lon": "0.51041", + "id": 121894 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "l'Esquirol", + "names": { + "ru": "Санта-Мария-де-Корко" + }, + "lat": "42.03402", + "lon": "2.36971", + "id": 1360757797, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "42.03584", + "lon": "2.36891", + "id": 53228, + "intersectedStreets": [ + { + "name": "Carrer Major", + "lat": "42.03619", + "lon": "2.36854" + }, + { + "name": "Carrer Nou", + "lat": "42.03514", + "lon": "2.36895" + }, + { + "name": "Passeig de les Gorgues", + "lat": "42.03514", + "lon": "2.36895" + } + ] + }, + { + "name": "Camí de Sant Bartomeu", + "lat": "42.01598", + "lon": "2.37285", + "id": 108831 + }, + { + "name": "Carrer de Sant Bartomeu (Les Planes)", + "lat": "42.03441", + "lon": "2.40064", + "id": 83257, + "intersectedStreets": [ + { + "name": "Camí de l'Esquirol", + "lat": "42.03742", + "lon": "2.40122" + }, + { + "name": "Carrer Major (Cantonigròs)", + "names": { + "ca": "carrer de Sant Roc (Cantonigròs)" + }, + "lat": "42.03742", + "lon": "2.40122" + }, + { + "name": "Carrer de Pere Gabarró Majoral", + "lat": "42.03610", + "lon": "2.40107" + }, + { + "name": "Carrer de Pompeu Fabra (Les Planes)", + "names": { + "ca": "carrer de Pompeu Fabra (Les Planes)" + }, + "lat": "42.03447", + "lon": "2.40064" + }, + { + "name": "Carrer de Osona", + "lat": "42.03275", + "lon": "2.40028" + }, + { + "name": "Carrer de Sant Martí", + "lat": "42.03140", + "lon": "2.40008" + }, + { + "name": "Carrer de la Pineda", + "lat": "42.03065", + "lon": "2.39989" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Vallromanes", + "lat": "41.53232", + "lon": "2.29893", + "id": 1460478032, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.54108", + "lon": "2.28709", + "id": 71373, + "intersectedStreets": [ + { + "name": "Carrer de Sant Joan", + "lat": "41.54048", + "lon": "2.28713" + }, + { + "name": "Carrer de Sant Antoni", + "lat": "41.54169", + "lon": "2.28747" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Palau-solità i Plegamans", + "lat": "41.58739", + "lon": "2.18068", + "id": 1460479055, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Soler", + "lat": "41.59683", + "lon": "2.17630", + "id": 60908, + "intersectedStreets": [ + { + "name": "Carrer de la Pineda", + "lat": "41.59665", + "lon": "2.17392" + }, + { + "name": "Carrer de la Bonança", + "lat": "41.59670", + "lon": "2.17450" + }, + { + "name": "Carrer de les Piscines", + "lat": "41.59675", + "lon": "2.17514" + }, + { + "name": "Carrer de Manresa", + "lat": "41.59678", + "lon": "2.17564" + }, + { + "name": "Carrer de Can Ceferí", + "lat": "41.59683", + "lon": "2.17630" + }, + { + "name": "Carrer del Sol", + "lat": "41.59688", + "lon": "2.17677" + }, + { + "name": "Carrer de Bonavista", + "lat": "41.59677", + "lon": "2.17793" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Madrid", + "enName": "Madrid", + "names": { + "be-tarask": "Мадрыд", + "de": "Madrid", + "hi": "मद्रिद", + "rue": "Мадрід", + "koi": "Мадрид", + "lt": "Madridas", + "lv": "Madride", + "hu": "Madrid", + "xmf": "მადრიდი", + "yi": "מאדריד", + "hy": "Մադրիդ", + "uk": "Мадрид", + "ur": "میدرد", + "mk": "Мадрид", + "haw": "Makelika", + "ml": "മാഡ്രിഡ്", + "ext": "Mairil", + "lez": "Мадрид", + "ab": "Мaдрид", + "mn": "Мадрид", + "tet": "Madríd", + "mr": "माद्रिद", + "pnb": "میڈرڈ", + "el": "Μαδρίτη", + "eo": "Madrido", + "is": "Madrid", + "am": "ማድሪድ", + "an": "Madrit", + "es": "Madrid", + "zh": "馬德里", + "eu": "Madril", + "ar": "مدريد", + "bat-smg": "Madrids", + "mhr": "Мадрид", + "ja": "マドリード", + "fa": "مادرید", + "ba": "Мадрид", + "udm": "Мадрид", + "no": "Madrid", + "be": "Мадрыд", + "ru": "Мадрид", + "bg": "Мадрид", + "yue": "馬德里", + "myv": "Мадрид ош", + "bn": "মাদ্রিদ", + "fr": "Madrid", + "bo": "མ་ད་རིད།", + "sa": "मद्रिद्", + "arc": "ܡܕܪܝܕ", + "oc": "Madrid", + "ka": "მადრიდი", + "sk": "Madrid", + "sl": "Madrid", + "ga": "Maidrid", + "sah": "Мадрид", + "ca": "Madrid", + "sq": "Madridi", + "sr": "Мадрид", + "kk": "Мадрид", + "mzn": "مادرید", + "kn": "ಮಾದ್ರಿದ್", + "sv": "Madrid", + "ko": "마드리드", + "mrj": "Мадрид", + "os": "Мадрид", + "szl": "Madryt", + "nds-nl": "Medrid", + "arz": "مدريد", + "ku": "Madrîd", + "kv": "Мадрид", + "co": "Madridi", + "kbd": "Мадрид", + "ta": "மத்ரித்", + "ky": "Мадрид", + "cv": "Мадрид", + "tg": "Мадрид", + "th": "มาดริด", + "la": "Matritum", + "ckb": "مادرید", + "zh_pinyin": "Mǎdélǐ", + "pl": "Madryt", + "he": "מדריד" + }, + "lat": "40.41670", + "lon": "-3.70358", + "id": 21068295, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Móstoles", + "enName": "Móstoles", + "names": { + "ar": "موستولس", + "ru": "Мостолес", + "el": "Μόστολες", + "ja": "モストレス", + "fa": "موستولس", + "hu": "Móstoles", + "ur": "موستولس", + "zh": "莫斯托莱斯", + "sr": "Мостолес" + }, + "lat": "40.32385", + "lon": "-3.86492", + "id": 306524430, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "la Garriga", + "lat": "41.68491", + "lon": "2.28658", + "id": 1470838435, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Reus", + "names": { + "ru": "Реус", + "uk": "Реус", + "el": "Ρέους", + "lt": "Reusas" + }, + "lat": "41.15556", + "lon": "1.10761", + "id": 152377926, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Torredembarra", + "lat": "41.14616", + "lon": "1.39595", + "id": 1460478559, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Badalona", + "names": { + "kk": "Бадалона", + "be": "Бадалона", + "ru": "Бадалона", + "ko": "바달로나", + "bg": "Бадалона", + "el": "Μπαδαλόνα", + "sa": "बाडालोना", + "zh": "巴达洛纳", + "ar": "بادالونا", + "hy": "Բադալոնա", + "th": "บาดาโลนา", + "ka": "ბადალონა", + "uk": "Бадалона", + "ja": "バダロナ", + "fa": "بادالونا", + "sr": "Бадалона" + }, + "lat": "41.44935", + "lon": "2.24825", + "id": 52228684, + "type": "CITY", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu (Sant Antoni de Llefià)", + "names": { + "wikipedia": "ca:Bartomeu apòstol" + }, + "lat": "41.44260", + "lon": "2.21649", + "id": 11531, + "intersectedStreets": [ + { + "name": "avinguda d'Amèrica (Sant Joan de Llefià)", + "names": { + "wikipedia": "ca:Amèrica (Sant Joan de Llefià)" + }, + "lat": "41.44192", + "lon": "2.21722" + }, + { + "name": "carrer de Sant Frederic", + "names": { + "wikipedia": "ca:Frederic d'Utrecht" + }, + "lat": "41.44194", + "lon": "2.21711" + }, + { + "name": "carrer de Bellavista (Sant Antoni de Llefià)", + "lat": "41.44239", + "lon": "2.21653" + }, + { + "name": "carrer de la Circumval·lació", + "lat": "41.44284", + "lon": "2.21591" + } + ] + }, + { + "name": "carrer del Doctor Robert (Bufalà)", + "names": { + "wikipedia": "ca:Bartomeu Robert i Yarzábal (Bufalà)" + }, + "lat": "41.46008", + "lon": "2.24254", + "id": 15319, + "intersectedStreets": [ + { + "name": "carrer de Sant Jordi", + "names": { + "wikipedia": "ca:Sant Jordi" + }, + "lat": "41.45603", + "lon": "2.24353" + }, + { + "name": "carrer de Jacint Verdaguer (Dalt de la Vila)", + "names": { + "wikipedia": "ca:Jacint Verdaguer i Santaló (Dalt de la Vila)" + }, + "lat": "41.45603", + "lon": "2.24353" + }, + { + "name": "carrer de Baldomer Galofre", + "names": { + "wikipedia": "ca:Baldomer Galofre i Giménez" + }, + "lat": "41.45603", + "lon": "2.24353" + }, + { + "name": "carrer de Sant Felip i d'en Rosés", + "names": { + "wikipedia": "ca:Felip l'Evangelista" + }, + "lat": "41.45603", + "lon": "2.24353" + }, + { + "name": "carrer del Doctor Daudí", + "lat": "41.45698", + "lon": "2.24338" + }, + { + "name": "avinguda de Bufalà", + "names": { + "wikipedia": "ca:Bufalà" + }, + "lat": "41.45873", + "lon": "2.24310" + }, + { + "name": "carrer del Bruc (Bufalà)", + "names": { + "wikipedia": "ca:Batalla del Bruc (Bufalà)" + }, + "lat": "41.45918", + "lon": "2.24299" + }, + { + "name": "carrer de Roncesvalls", + "names": { + "wikipedia": "ca:Batalla de Roncesvalls" + }, + "lat": "41.45952", + "lon": "2.24291" + }, + { + "name": "Carrer de Girona (Bufalà)", + "names": { + "wikipedia": "ca:Setge de Girona de 1809 (Bufalà)" + }, + "lat": "41.45969", + "lon": "2.24280" + }, + { + "name": "carrer de Rubió i Ors", + "names": { + "wikipedia": "ca:Joaquim Rubió i Ors" + }, + "lat": "41.46021", + "lon": "2.24256" + }, + { + "name": "carrer de Bailén", + "names": { + "wikipedia": "ca:Batalla de Bailèn" + }, + "lat": "41.46043", + "lon": "2.24246" + }, + { + "name": "carrer d'Ibèria", + "names": { + "wikipedia": "ca:Ibèria" + }, + "lat": "41.46053", + "lon": "2.24241" + }, + { + "name": "carrer de Castillejos", + "names": { + "wikipedia": "ca:Batalla de Castillejos" + }, + "lat": "41.46096", + "lon": "2.24209" + }, + { + "name": "carrer de la Sardana (Bufalà)", + "names": { + "wikipedia": "ca:Sardana (Bufalà)" + }, + "lat": "41.46153", + "lon": "2.24170" + }, + { + "name": "carrer de l'Alcalde de Móstoles", + "names": { + "wikipedia": "ca:Ban dels alcaldes de Móstoles" + }, + "lat": "41.46207", + "lon": "2.24132" + }, + { + "name": "avinguda de la Cerdanya", + "names": { + "wikipedia": "ca:Cerdanya" + }, + "lat": "41.46373", + "lon": "2.24007" + }, + { + "name": "carreró de Can Pontons", + "lat": "41.46384", + "lon": "2.23969" + }, + { + "name": "carrer de la Independència", + "names": { + "wikipedia": "ca:Guerra del Francès" + }, + "lat": "41.46387", + "lon": "2.23954" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "la Roca del Vallès", + "lat": "41.58834", + "lon": "2.33146", + "id": 1470838451, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Garraf", + "lat": "41.25274", + "lon": "1.90247", + "id": 5025041121, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Passeig de Bartomeu Soler", + "lat": "41.24571", + "lon": "1.80002", + "id": 90643, + "intersectedStreets": [ + { + "name": "Passeig de Sant Dídac", + "lat": "41.24697", + "lon": "1.80152" + }, + { + "name": "Passeig del Fondac", + "lat": "41.24461", + "lon": "1.79714" + } + ] + }, + { + "name": "Carrer Bartomeu Robert", + "lat": "41.22943", + "lon": "1.78884", + "id": 28472, + "intersectedStreets": [ + { + "name": "Avinguda de Navarra (Sitges)", + "lat": "41.22931", + "lon": "1.78777" + }, + { + "name": "Carrer Ferran Casablancas", + "lat": "41.22931", + "lon": "1.78777" + }, + { + "name": "Carrer de Josep Planas Robert (Sitges)", + "lat": "41.22943", + "lon": "1.78884" + }, + { + "name": "Carrer de Balmes (Sitges)", + "names": { + "ca": "Carrer de Balmes (Sitges)" + }, + "lat": "41.22954", + "lon": "1.78996" + }, + { + "name": "Carrer del Pintor Roig i Soler (Sitges)", + "lat": "41.22954", + "lon": "1.78996" + } + ] + }, + { + "name": "Carrer de Sant Bartomeu (Sitges)", + "lat": "41.23759", + "lon": "1.80899", + "id": 28353, + "intersectedStreets": [ + { + "name": "Carrer Jesús (Sitges)", + "lat": "41.23683", + "lon": "1.80978" + }, + { + "name": "Carrer de Sant Gaudenci (Sitges)", + "lat": "41.23759", + "lon": "1.80899" + }, + { + "name": "Avinguda d'Artur Carbonell", + "lat": "41.23856", + "lon": "1.80796" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Calafell", + "lat": "41.20146", + "lon": "1.56803", + "id": 440667418, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Jaume de Llierca", + "lat": "42.21198", + "lon": "2.60743", + "id": 864892113, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Terrades", + "lat": "42.21120", + "lon": "2.60797", + "id": 96353 + } + ], + "matchStreet": 1 + }, + { + "name": "Alcalá de Henares", + "names": { + "ar": "القلعة الحجارة", + "ru": "Алькала-де-Энарес", + "uk": "Алькала-де-Енарес", + "el": "Αλκαλά ντε Ενάρες", + "lt": "Alkala de Henaresas", + "fa": "الکالا د هنارس", + "hu": "Alcalá de Henares", + "ur": "الکالا دے ایناریس", + "es": "Alcalá de Henares", + "sr": "Алкала де Енарес" + }, + "lat": "40.48184", + "lon": "-3.36450", + "id": 209144042, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Quirze del Vallès", + "names": { + "es:1857-1976": "San Quirico de Tarrasa" + }, + "lat": "41.53014", + "lon": "2.08201", + "id": 1470838966, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Figueres", + "names": { + "fr": "Figueres", + "ca": "Figueres", + "es": "Figueras" + }, + "lat": "42.26663", + "lon": "2.96384", + "id": 1470838284, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Falset", + "lat": "41.14510", + "lon": "0.81962", + "id": 1470838282, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Puigcerdà", + "names": { + "lt": "Puigserda" + }, + "lat": "42.43180", + "lon": "1.92787", + "id": 1470838793, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Baixada de Sant Bartomeu", + "lat": "42.43146", + "lon": "1.92919", + "id": 72687 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Paracuellos de Jarama", + "lat": "40.50510", + "lon": "-3.53185", + "id": 256245933, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Gurb", + "lat": "41.94099", + "lon": "2.24330", + "id": 7099361433, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carretera de Sant Bartomeu", + "lat": "41.94163", + "lon": "2.24205", + "id": 74041, + "intersectedStreets": [ + { + "name": "Carrer de Colom", + "lat": "41.94163", + "lon": "2.24205" + }, + { + "name": "Carrer de Sant Roc", + "names": { + "ca": "Carrer de Sant Roc" + }, + "lat": "41.94216", + "lon": "2.24166" + }, + { + "name": "Carrer de Mossèn Jacint Verdaguer", + "lat": "41.94382", + "lon": "2.24052" + }, + { + "name": "Carrer del Ginebrar", + "lat": "41.94543", + "lon": "2.23941" + }, + { + "name": "Plaça de l'Amistat", + "lat": "41.94586", + "lon": "2.23911" + }, + { + "name": "Passeig de Prixana", + "lat": "41.94589", + "lon": "2.23909" + }, + { + "name": "Carrer del Castell", + "lat": "41.94624", + "lon": "2.23885" + }, + { + "name": "Carrer de la Clàudia", + "lat": "41.94696", + "lon": "2.23834" + }, + { + "name": "Carrer de la Carlota", + "lat": "41.94739", + "lon": "2.23804" + }, + { + "name": "Carrer Diagonal", + "lat": "41.94784", + "lon": "2.23771" + }, + { + "name": "Carrer del Canigó", + "lat": "41.94786", + "lon": "2.23769" + }, + { + "name": "Pont de Can Sila", + "lat": "41.96598", + "lon": "2.22402" + }, + { + "name": "Pont de l'Argila", + "lat": "41.97067", + "lon": "2.21733" + }, + { + "name": "Carretera de Vespella", + "lat": "41.97300", + "lon": "2.21312" + }, + { + "name": "BV-4602", + "lat": "41.97174", + "lon": "2.21709" + }, + { + "name": "Camí de Sant Julià Sassorba a Sant Bartomeu", + "lat": "41.97007", + "lon": "2.17504" + }, + { + "name": "Carrer del Montsseny", + "lat": "41.97725", + "lon": "2.20066" + } + ] + }, + { + "name": "Camí de Sant Julià Sassorba a Sant Bartomeu", + "lat": "41.96394", + "lon": "2.17851", + "id": 79968, + "intersectedStreets": [ + { + "name": "Carretera de Sant Bartomeu", + "lat": "41.97007", + "lon": "2.17506" + } + ] + }, + { + "name": "Camí de St. Julià Sassorba a St. Bartomeu", + "lat": "41.94417", + "lon": "2.17607", + "id": 79969 + }, + { + "name": "BV-4601 - Carretera de Sant Bartomeu", + "lat": "41.95368", + "lon": "2.23540", + "id": 1670 + } + ], + "matchStreet": 1 + }, + { + "name": "Gavà", + "lat": "41.30509", + "lon": "2.00631", + "id": 1470838298, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Olost", + "lat": "41.98529", + "lon": "2.09416", + "id": 247461646, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Camí d'Olost a la Carretera de Sant Bartomeu", + "lat": "41.98659", + "lon": "2.09888", + "id": 85617, + "intersectedStreets": [ + { + "name": "Carrer de les Escoles", + "lat": "41.98572", + "lon": "2.09817" + }, + { + "name": "Camí de Pela", + "lat": "41.98698", + "lon": "2.10047" + } + ] + }, + { + "name": "Camí d'Olost a la carretera de Sant Bartomeu", + "lat": "42.01593", + "lon": "2.12459", + "id": 87495 + } + ], + "matchStreet": 1 + }, + { + "name": "Roses", + "names": { + "ca": "Roses", + "es": "Rosas" + }, + "lat": "42.26320", + "lon": "3.17553", + "id": 1470838814, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Santa Perpètua de Mogoda", + "lat": "41.53281", + "lon": "2.18233", + "id": 1470839326, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Las Rozas de Madrid", + "names": { + "es": "Las Rozas de Madrid", + "zh": "奥特莱斯" + }, + "lat": "40.49331", + "lon": "-3.87584", + "id": 256552113, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Gandesa", + "lat": "41.05204", + "lon": "0.43890", + "id": 1470838296, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Ripoll", + "lat": "42.19824", + "lon": "2.19325", + "id": 1470838807, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Sant Bartomeu", + "lat": "42.19804", + "lon": "2.19426", + "id": 60239, + "intersectedStreets": [ + { + "name": "Carrer de l'estació", + "lat": "42.19778", + "lon": "2.19381" + }, + { + "name": "Carrer del Progrés", + "lat": "42.19804", + "lon": "2.19426" + }, + { + "name": "Carrer Indústria", + "lat": "42.19839", + "lon": "2.19480" + }, + { + "name": "Carretera d'Olot", + "lat": "42.19842", + "lon": "2.19488" + }, + { + "name": "Carrer Palmerola", + "lat": "42.19858", + "lon": "2.19512" + }, + { + "name": "Carrer Costabona", + "lat": "42.19866", + "lon": "2.19525" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Xalet Mas Reig", + "lat": "41.98740", + "lon": "2.16424", + "id": 3588223523, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Carretera de Sant Bartomeu del Grau", + "names": { + "alt_name": "Camí de les Farreres" + }, + "lat": "41.98642", + "lon": "2.16519", + "id": 55368 + } + ], + "matchStreet": 1 + }, + { + "name": "Cunit", + "lat": "41.19760", + "lon": "1.63446", + "id": 1470838245, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Barcelona", + "names": { + "de": "Barcelona", + "hi": "बार्सॆलोना", + "be": "Барселона", + "kn": "ಬಾರ್ಸೆಲೋನಾ", + "ru": "Барселона", + "pt": "Barcelona", + "gl": "Barcelona", + "el": "Βαρκελώνη", + "lt": "Barselona", + "it": "Barcellona", + "fr": "Barcelone", + "es": "Barcelona", + "zh": "巴塞罗那", + "eu": "Bartzelona", + "ar": "برشلونة", + "oc": "Barcelona", + "uk": "Барселона", + "ja": "バルセロナ", + "ckb": "بارسێلۆنا", + "ca": "Barcelona", + "mk": "Барселона", + "sr": "Барселона" + }, + "lat": "41.38289", + "lon": "2.17743", + "id": 152364165, + "type": "CITY", + "listOfStreets": [ + { + "name": "Carrer Bartomeu Pi", + "lat": "41.36963", + "lon": "2.13886", + "id": 1156, + "intersectedStreets": [ + { + "name": "Carrer Tort (la Bordeta)", + "lat": "41.37042", + "lon": "2.13984" + }, + { + "name": "Carrer de Viladecans (la Bordeta)", + "lat": "41.36961", + "lon": "2.13894" + }, + { + "name": "Carrer de Mossèn Amadeu Oller (la Bordeta)", + "lat": "41.36900", + "lon": "2.13819" + }, + { + "name": "Carrer de Navarra (la Bordeta)", + "lat": "41.37072", + "lon": "2.14019" + } + ] + }, + { + "name": "Carrer de Sant Bartomeu (el Raval)", + "lat": "41.37816", + "lon": "2.16924", + "id": 18565, + "intersectedStreets": [ + { + "name": "Carrer de la Riereta (el Raval)", + "lat": "41.37786", + "lon": "2.16879" + }, + { + "name": "Rambla del Raval", + "lat": "41.37835", + "lon": "2.16941" + } + ] + }, + { + "name": "Carrer de Sant Bartomeu de la Quadra (les Corts)", + "lat": "41.38987", + "lon": "2.10388", + "id": 121254, + "intersectedStreets": [ + { + "name": "Costa de Sant Bartomeu de la Quadra (les Corts)", + "lat": "41.38966", + "lon": "2.10382" + } + ] + }, + { + "name": "Costa de Sant Bartomeu de la Quadra (les Corts)", + "lat": "41.38943", + "lon": "2.10410", + "id": 13505, + "intersectedStreets": [ + { + "name": "Carrer del Torrent de les Roses (les Corts)", + "lat": "41.38964", + "lon": "2.10365" + }, + { + "name": "Carrer de Sant Bartomeu de la Quadra (les Corts)", + "lat": "41.38966", + "lon": "2.10382" + }, + { + "name": "Passatge de Santa de Vilalba (les Corts)", + "lat": "41.38964", + "lon": "2.10410" + }, + { + "name": "Carrer dels Herois del Bruc (les Corts)", + "lat": "41.38917", + "lon": "2.10429" + }, + { + "name": "Plaça del Coll de Finestrelles (les Corts)", + "lat": "41.38917", + "lon": "2.10429" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Balenyà", + "lat": "41.82161", + "lon": "2.22241", + "id": 4800634741, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu (els Hostalets de Balenyà)", + "lat": "41.81121", + "lon": "2.23308", + "id": 96720, + "intersectedStreets": [ + { + "name": "Avinguda d'Osona (els Hostalets de Balenyà)", + "lat": "41.81139", + "lon": "2.23507" + }, + { + "name": "Carrer de la Verge Montserrat", + "lat": "41.81139", + "lon": "2.23507" + }, + { + "name": "Carrer d'Alfons Amic", + "lat": "41.81097", + "lon": "2.23368" + }, + { + "name": "Carrer de Cervantes (els Hostalets de Balenyà)", + "lat": "41.81121", + "lon": "2.23308" + }, + { + "name": "Carretera de Ribes (la Cugullada)", + "lat": "41.81153", + "lon": "2.23231" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "el Prat de Llobregat", + "names": { + "ru": "Эль-Прат-де-Льобрегат", + "ca": "el Prat de Llobregat", + "es": "El Prat de Llobregat" + }, + "lat": "41.32463", + "lon": "2.09526", + "id": 1470838266, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Premià de Mar", + "lat": "41.49268", + "lon": "2.36058", + "id": 1470838783, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "el Vendrell", + "names": { + "ca": "el Vendrell" + }, + "lat": "41.21997", + "lon": "1.53486", + "id": 1470838269, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "el Masnou", + "lat": "41.47969", + "lon": "2.31183", + "id": 1470838263, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Castelló d'Empuries", + "lat": "42.25935", + "lon": "3.07338", + "id": 1949049715, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Gelida", + "lat": "41.44089", + "lon": "1.86343", + "id": 1460478611, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Bartomeu Raurell", + "lat": "41.44302", + "lon": "1.86574", + "id": 18243, + "intersectedStreets": [ + { + "name": "Avinguda del Funicular", + "lat": "41.44302", + "lon": "1.86474" + }, + { + "name": "Carrer del Poeta Jaume Vila", + "lat": "41.44300", + "lon": "1.86510" + }, + { + "name": "Carretera de Sant Llorenç d'Hortons", + "lat": "41.44298", + "lon": "1.86637" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Reus", + "lat": "41.15510", + "lon": "1.10871", + "id": 6948959184, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Vistabella", + "lat": "41.20940", + "lon": "1.26508", + "id": 886148850, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.20959", + "lon": "1.26502", + "id": 106354, + "intersectedStreets": [ + { + "name": "Plaça de l'Alcalde Joaquim Celma", + "lat": "41.20919", + "lon": "1.26463" + }, + { + "name": "Carrer del Roser", + "lat": "41.20959", + "lon": "1.26502" + }, + { + "name": "Carrer Vell", + "lat": "41.20999", + "lon": "1.26542" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "San Fernando de Henares", + "lat": "40.42485", + "lon": "-3.53504", + "id": 280130897, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sort", + "lat": "42.41140", + "lon": "1.12977", + "id": 151060133, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Ciempozuelos", + "lat": "40.15801", + "lon": "-3.62055", + "id": 308517254, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Vallbona d'Anoia", + "lat": "41.51948", + "lon": "1.70829", + "id": 347532113, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer Bartomeu", + "lat": "41.51862", + "lon": "1.70619", + "id": 3769, + "intersectedStreets": [ + { + "name": "Carrer Major", + "lat": "41.51873", + "lon": "1.70608" + }, + { + "name": "Carrer Nou", + "lat": "41.51809", + "lon": "1.70642" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Tremp", + "lat": "42.16637", + "lon": "0.89462", + "id": 3890310157, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "la Secuita", + "lat": "41.20319", + "lon": "1.27914", + "id": 886148842, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu (Vistabella)", + "lat": "41.20959", + "lon": "1.26502", + "id": 106353, + "intersectedStreets": [ + { + "name": "Plaça de l'Alcalde Joaquim Celma", + "lat": "41.20919", + "lon": "1.26463" + }, + { + "name": "Carrer del Roser (Vistabella)", + "lat": "41.20959", + "lon": "1.26502" + }, + { + "name": "Carrer Vell (Vistabella)", + "lat": "41.20999", + "lon": "1.26542" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Mejorada del Campo", + "lat": "40.39718", + "lon": "-3.48961", + "id": 303821734, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Masarbonès", + "lat": "41.26018", + "lon": "1.43825", + "id": 1896326329, + "type": "HAMLET", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.25992", + "lon": "1.43844", + "id": 105690, + "intersectedStreets": [ + { + "name": "Carrer de Sant Antoni", + "lat": "41.25984", + "lon": "1.43687" + }, + { + "name": "Carrer Major", + "lat": "41.25992", + "lon": "1.43796" + }, + { + "name": "Carrer de Bonastre", + "lat": "41.25995", + "lon": "1.43848" + }, + { + "name": "Carrer de les Fassines", + "lat": "41.26021", + "lon": "1.43874" + }, + { + "name": "Plaça de l'Om", + "lat": "41.26044", + "lon": "1.43854" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Algete", + "names": { + "ar": "الشط" + }, + "lat": "40.59617", + "lon": "-3.49742", + "id": 1487216934, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Sant Cugat del Vallès", + "lat": "41.47284", + "lon": "2.08178", + "id": 1470838828, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.47405", + "lon": "2.08290", + "id": 54668, + "intersectedStreets": [ + { + "name": "Carrer de Santa Anna", + "lat": "41.47421", + "lon": "2.08279" + }, + { + "name": "Carrer de les Escaletes", + "lat": "41.47405", + "lon": "2.08290" + }, + { + "name": "Carrer de Sant Martí", + "lat": "41.47396", + "lon": "2.08296" + }, + { + "name": "Carrer de l'Hospital", + "lat": "41.47341", + "lon": "2.08356" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Òdena", + "lat": "41.60688", + "lon": "1.64222", + "id": 355898040, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer sant Bartomeu", + "lat": "41.58110", + "lon": "1.63784", + "id": 24402, + "intersectedStreets": [ + { + "name": "Carrer de la carretera", + "lat": "41.58093", + "lon": "1.63769" + }, + { + "name": "Carrer de la Calç", + "lat": "41.58110", + "lon": "1.63784" + }, + { + "name": "Carrer de Sant Jaume", + "lat": "41.58142", + "lon": "1.63801" + }, + { + "name": "Carrer de la Línia", + "lat": "41.58142", + "lon": "1.63801" + } + ] + } + ], + "matchStreet": 1 + }, + { + "name": "Sant Boi de Llobregat", + "lat": "41.34590", + "lon": "2.04137", + "id": 1470838825, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Bartomeu Garcia i Subirà", + "lat": "41.33342", + "lon": "2.03535", + "id": 106600, + "intersectedStreets": [ + { + "name": "Avinguda de la Torre de la Vila (Casablanca)", + "lat": "41.33377", + "lon": "2.03494" + }, + { + "name": "carrer d'Aleix Parés i Valls", + "lat": "41.33338", + "lon": "2.03539" + }, + { + "name": "Carrer de la Joventut (Casablanca)", + "lat": "41.33298", + "lon": "2.03584" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Riba-roja d'Ebre", + "lat": "41.25135", + "lon": "0.48730", + "id": 637456379, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.25056", + "lon": "0.48812", + "id": 100817 + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Sant Feliu de Guíxols", + "names": { + "ca": "Sant Feliu de Guíxols" + }, + "lat": "41.78388", + "lon": "3.02832", + "id": 1470838830, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Villalbilla", + "names": { + "ru": "Вильяльбилья", + "uk": "Вільяльбілья", + "es": "Villalbilla" + }, + "lat": "40.43247", + "lon": "-3.29862", + "id": 311122244, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Granollers", + "lat": "41.60796", + "lon": "2.28760", + "id": 1470838306, + "type": "TOWN", + "listOfStreets": [ + { + "name": "Carrer Bartomeu Brufalt (Bellavista)", + "lat": "41.61450", + "lon": "2.29526", + "id": 116993, + "intersectedStreets": [ + { + "name": "Avinguda de Francesc Ribas (Joan Prim)", + "lat": "41.61328", + "lon": "2.29464" + }, + { + "name": "Carrer Zorrilla", + "lat": "41.61450", + "lon": "2.29526" + }, + { + "name": "Carrer de Manuel Cornellà (Bellavista)", + "lat": "41.61523", + "lon": "2.29543" + } + ] + }, + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.60821", + "lon": "2.28567", + "id": 132663, + "intersectedStreets": [ + { + "name": "Carrer de Sant Jaume", + "lat": "41.60817", + "lon": "2.28559" + }, + { + "name": "Carrer Constància (Centre)", + "lat": "41.60878", + "lon": "2.28610" + }, + { + "name": "Carrer de Santa Anna (Centre)", + "lat": "41.60878", + "lon": "2.28610" + } + ] + }, + { + "name": "Carrer de Bartomeu Serret i Argemi", + "lat": "41.59588", + "lon": "2.28739", + "id": 54706, + "intersectedStreets": [ + { + "name": "Carrer Maria Aurèlia Campmany", + "lat": "41.59595", + "lon": "2.28702" + }, + { + "name": "Carrer del Pla de Baix", + "lat": "41.59580", + "lon": "2.28825" + }, + { + "name": "Carrer d'Esteve Terrades", + "lat": "41.59558", + "lon": "2.29013" + }, + { + "name": "Carrer Ramon Dagà", + "lat": "41.59568", + "lon": "2.28938" + } + ] + } + ], + "init": 1, + "matchStreet": 1 + }, + { + "name": "Sant Adrià de Besòs", + "names": { + "ca": "Sant Adrià de Besòs" + }, + "lat": "41.43048", + "lon": "2.21828", + "id": 1470838823, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Salt", + "enName": "Salt", + "names": { + "es": "Salt" + }, + "lat": "41.97417", + "lon": "2.79499", + "id": 1470838822, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Salou", + "lat": "41.07682", + "lon": "1.14404", + "id": 1470838821, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Corbins", + "lat": "41.69057", + "lon": "0.69308", + "id": 2202651293, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.69298", + "lon": "0.69304", + "id": 35417 + } + ], + "matchStreet": 1 + }, + { + "name": "Alpicat", + "lat": "41.66512", + "lon": "0.55607", + "id": 796917354, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.66806", + "lon": "0.55494", + "id": 110134 + }, + { + "name": "Travessia de Sant Bartomeu", + "lat": "41.66854", + "lon": "0.55387", + "id": 131137 + } + ], + "matchStreet": 1 + }, + { + "name": "Sant Joan Despí", + "lat": "41.36680", + "lon": "2.05703", + "id": 1470838836, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Guissona", + "names": { + "es": "Guissona" + }, + "lat": "41.78524", + "lon": "1.28903", + "id": 1470838323, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "l'Hospitalet de Llobregat", + "names": { + "ru": "Оспиталет-де-Льобрегат", + "el": "Οσπιταλέτ ντε Λιοβρεγάτ", + "ca": "l'Hospitalet de Llobregat", + "sr": "Лоспиталет де Љобрегат" + }, + "lat": "41.35986", + "lon": "2.09979", + "id": 939880925, + "type": "CITY", + "listOfStreets": [], + "init": 1 + }, + { + "name": "la Llagosta", + "lat": "41.51399", + "lon": "2.19121", + "id": 1460478680, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Amposta", + "lat": "40.70799", + "lon": "0.58276", + "id": 4678926078, + "type": "TOWN", + "listOfStreets": [], + "init": 1 + }, + { + "name": "Montagut", + "lat": "42.23093", + "lon": "2.59674", + "id": 1297380489, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Carrer de Sant Bartomeu", + "lat": "42.22612", + "lon": "2.57677", + "id": 110634 + } + ], + "matchStreet": 1 + }, + { + "name": "Sidamon", + "lat": "41.62752", + "lon": "0.83082", + "id": 1460478674, + "type": "VILLAGE", + "listOfStreets": [ + { + "name": "Torrent de Sant Bartomeu", + "lat": "41.62890", + "lon": "0.83348", + "id": 97566 + }, + { + "name": "Carrer de Sant Bartomeu", + "lat": "41.62887", + "lon": "0.83256", + "id": 97567 + } + ], + "matchStreet": 1 + } + ] +} \ No newline at end of file From 4c4751683ddd9d145a752e3642d6170614e4444f Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 25 May 2020 12:09:10 +0300 Subject: [PATCH 074/108] Fix dashboard fav color --- OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java index 1b01f158be..8ca1c92810 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java @@ -143,7 +143,7 @@ public class DashFavoritesFragment extends DashLocationFragment { } ((ImageView) view.findViewById(R.id.favourite_icon)).setImageDrawable(FavoriteImageDrawable.getOrCreate( - getActivity(), point.getColor(), false, point)); + getActivity(), app.getFavorites().getColorWithCategory(point, getResources().getColor(R.color.color_favorite)), false, point)); DashLocationView dv = new DashLocationView(direction, label, new LatLon(point.getLatitude(), point.getLongitude())); distances.add(dv); From 3fd36ba47f664594211984284fdf89d71c772ddf Mon Sep 17 00:00:00 2001 From: Nazar-Kutz Date: Mon, 25 May 2020 14:15:16 +0300 Subject: [PATCH 075/108] return wikipedia poi type --- OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java b/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java index d24109f6f2..8e30fb274f 100644 --- a/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java +++ b/OsmAnd/src/net/osmand/plus/poi/PoiFiltersHelper.java @@ -340,11 +340,7 @@ public class PoiFiltersHelper { public List getSortedPoiFilters(@NonNull ApplicationMode appMode, boolean onlyActive) { initPoiUIFiltersState(appMode); List allFilters = new ArrayList<>(); - for (PoiUIFilter filter : getTopDefinedPoiFilters()) { - if (!filter.isWikiFilter()) { - allFilters.add(filter); - } - } + allFilters.addAll(getTopDefinedPoiFilters()); allFilters.addAll(getSearchPoiFilters()); Collections.sort(allFilters); if (onlyActive) { From 4ffd5cb2e2d569d7273ecc681478b5e4202a90eb Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 25 May 2020 14:50:35 +0300 Subject: [PATCH 076/108] Add vector version of Actions menu icon --- OsmAnd/res/drawable/ic_actions_menu.xml | 45 +++++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 OsmAnd/res/drawable/ic_actions_menu.xml diff --git a/OsmAnd/res/drawable/ic_actions_menu.xml b/OsmAnd/res/drawable/ic_actions_menu.xml new file mode 100644 index 0000000000..4658db069c --- /dev/null +++ b/OsmAnd/res/drawable/ic_actions_menu.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + From 80358db2337d58c3379030d8eda1f3b2eca17353 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Mon, 25 May 2020 15:05:03 +0300 Subject: [PATCH 077/108] Add vector compass icons --- OsmAnd/res/drawable/ic_compass.xml | 13 +++++++++++++ OsmAnd/res/drawable/ic_compass_bearing.xml | 12 ++++++++++++ OsmAnd/res/drawable/ic_compass_bearing_white.xml | 12 ++++++++++++ OsmAnd/res/drawable/ic_compass_niu.xml | 12 ++++++++++++ OsmAnd/res/drawable/ic_compass_niu_white.xml | 12 ++++++++++++ OsmAnd/res/drawable/ic_compass_white.xml | 13 +++++++++++++ 6 files changed, 74 insertions(+) create mode 100644 OsmAnd/res/drawable/ic_compass.xml create mode 100644 OsmAnd/res/drawable/ic_compass_bearing.xml create mode 100644 OsmAnd/res/drawable/ic_compass_bearing_white.xml create mode 100644 OsmAnd/res/drawable/ic_compass_niu.xml create mode 100644 OsmAnd/res/drawable/ic_compass_niu_white.xml create mode 100644 OsmAnd/res/drawable/ic_compass_white.xml diff --git a/OsmAnd/res/drawable/ic_compass.xml b/OsmAnd/res/drawable/ic_compass.xml new file mode 100644 index 0000000000..03cf8d94db --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass.xml @@ -0,0 +1,13 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_bearing.xml b/OsmAnd/res/drawable/ic_compass_bearing.xml new file mode 100644 index 0000000000..46be57b5d8 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_bearing.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_bearing_white.xml b/OsmAnd/res/drawable/ic_compass_bearing_white.xml new file mode 100644 index 0000000000..46be57b5d8 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_bearing_white.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_niu.xml b/OsmAnd/res/drawable/ic_compass_niu.xml new file mode 100644 index 0000000000..90bb87a71b --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_niu.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_niu_white.xml b/OsmAnd/res/drawable/ic_compass_niu_white.xml new file mode 100644 index 0000000000..4e75ed5fa0 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_niu_white.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_white.xml b/OsmAnd/res/drawable/ic_compass_white.xml new file mode 100644 index 0000000000..db5bdd12d6 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_white.xml @@ -0,0 +1,13 @@ + + + + From 30eac3412f9aff9204bd9addfa362f6a987114ce Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 25 May 2020 15:45:36 +0300 Subject: [PATCH 078/108] Fix several possible exceptions --- .../src/net/osmand/plus/AppInitializer.java | 3 +- .../OsmandInAppPurchaseActivity.java | 7 ++-- .../SettingsDevelopmentActivity.java | 2 +- .../osmand/plus/dialogs/ConfigureMapMenu.java | 2 +- .../download/ui/LocalIndexesFragment.java | 16 +++---- .../osmand/plus/helpers/WaypointHelper.java | 25 +++++------ .../monitoring/OsmandMonitoringPlugin.java | 42 ++++++++++--------- .../fragments/VehicleParametersFragment.java | 7 ++-- .../plus/srtmplugin/TerrainFragment.java | 28 ++++++------- .../wikipedia/WikipediaWebViewClient.java | 5 ++- .../wikivoyage/WikivoyageWebViewClient.java | 7 +++- 11 files changed, 80 insertions(+), 64 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java index 3338594403..f09785122e 100644 --- a/OsmAnd/src/net/osmand/plus/AppInitializer.java +++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java @@ -553,7 +553,8 @@ public class AppInitializer implements IProgress { customConfigs.put(fileName, builder); } catch (XmlPullParserException | IOException e) { - throw new IllegalStateException(e); + Algorithms.removeAllFiles(f); + LOG.error(e); } } } diff --git a/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java b/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java index 76293f870d..cb91f7d167 100644 --- a/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java +++ b/OsmAnd/src/net/osmand/plus/activities/OsmandInAppPurchaseActivity.java @@ -166,17 +166,18 @@ public class OsmandInAppPurchaseActivity extends AppCompatActivity implements In @Override public void onItemPurchased(String sku, boolean active) { + FragmentManager fragmentManager = getSupportFragmentManager(); if (purchaseHelper != null && purchaseHelper.getLiveUpdates().containsSku(sku)) { getMyApplication().logEvent("live_osm_subscription_purchased"); - if (!active) { + if (!active && !fragmentManager.isStateSaved()) { OsmLiveRestartBottomSheetDialogFragment fragment = new OsmLiveRestartBottomSheetDialogFragment(); fragment.setUsedOnMap(this instanceof MapActivity); - fragment.show(getSupportFragmentManager(), OsmLiveRestartBottomSheetDialogFragment.TAG); + fragment.show(fragmentManager, OsmLiveRestartBottomSheetDialogFragment.TAG); } } onInAppPurchaseItemPurchased(sku); - fireInAppPurchaseItemPurchasedOnFragments(getSupportFragmentManager(), sku, active); + fireInAppPurchaseItemPurchasedOnFragments(fragmentManager, sku, active); } public void fireInAppPurchaseItemPurchasedOnFragments(@NonNull FragmentManager fragmentManager, diff --git a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java index 3cfd370057..b5ea815bed 100644 --- a/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java +++ b/OsmAnd/src/net/osmand/plus/development/SettingsDevelopmentActivity.java @@ -215,7 +215,7 @@ public class SettingsDevelopmentActivity extends SettingsBaseActivity { SunriseSunset sunriseSunset = getMyApplication().getDaynightHelper().getSunriseSunset(); pref = new Preference(this); pref.setTitle(R.string.day_night_info); - if (sunriseSunset != null) { + if (sunriseSunset != null && sunriseSunset.getSunrise() != null && sunriseSunset.getSunset() != null) { SimpleDateFormat prt = new SimpleDateFormat("yyyy-MM-dd HH:mm"); pref.setSummary(getString(R.string.day_night_info_description, prt.format(sunriseSunset.getSunrise()), prt.format(sunriseSunset.getSunset()))); diff --git a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java index 0ab07cc75b..b3e11e54b6 100644 --- a/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java +++ b/OsmAnd/src/net/osmand/plus/dialogs/ConfigureMapMenu.java @@ -504,7 +504,7 @@ public class ConfigureMapMenu { String description = ""; SunriseSunset sunriseSunset = activity.getMyApplication().getDaynightHelper().getSunriseSunset(); - if (sunriseSunset != null) { + if (sunriseSunset != null && sunriseSunset.getSunrise() != null && sunriseSunset.getSunset() != null) { DateFormat dateFormat = DateFormat.getTimeInstance(DateFormat.SHORT); String sunriseTime = dateFormat.format(sunriseSunset.getSunrise()); String sunsetTime = dateFormat.format(sunriseSunset.getSunset()); diff --git a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java index bbb0f694e9..b4441a2ed6 100644 --- a/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java +++ b/OsmAnd/src/net/osmand/plus/download/ui/LocalIndexesFragment.java @@ -768,13 +768,15 @@ public class LocalIndexesFragment extends OsmandExpandableListFragment implement } @Override - public boolean onOptionsItemSelected(MenuItem item) { - int itemId = item.getItemId(); - for (int i = 0; i < optionsMenuAdapter.length(); i++) { - ContextMenuItem contextMenuItem = optionsMenuAdapter.getItem(i); - if (itemId == contextMenuItem.getTitleId()) { - contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false, null); - return true; + public boolean onOptionsItemSelected(@NonNull MenuItem item) { + if (optionsMenuAdapter != null) { + int itemId = item.getItemId(); + for (int i = 0; i < optionsMenuAdapter.length(); i++) { + ContextMenuItem contextMenuItem = optionsMenuAdapter.getItem(i); + if (itemId == contextMenuItem.getTitleId()) { + contextMenuItem.getItemClickListener().onContextMenuClick(null, itemId, i, false, null); + return true; + } } } return super.onOptionsItemSelected(item); diff --git a/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java b/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java index 239715e192..5cd0ce4b39 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/WaypointHelper.java @@ -17,11 +17,8 @@ import net.osmand.data.LocationPoint; import net.osmand.data.PointDescription; import net.osmand.data.WptLocationPoint; import net.osmand.osm.PoiType; -import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.settings.backend.OsmandSettings.MetricsConstants; import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper.TargetPoint; import net.osmand.plus.UiUtilities; @@ -33,6 +30,9 @@ import net.osmand.plus.routing.AlarmInfo; import net.osmand.plus.routing.AlarmInfo.AlarmInfoType; import net.osmand.plus.routing.RouteCalculationResult; import net.osmand.plus.routing.VoiceRouter; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.backend.OsmandSettings.MetricsConstants; import net.osmand.util.MapUtils; import java.util.ArrayList; @@ -627,20 +627,21 @@ public class WaypointHelper { amenities.addAll(pf.searchAmenitiesOnThePath(locs, poiSearchDeviationRadius)); } for (Amenity a : amenities) { - AmenityRoutePoint rp = a.getRoutePoint(); - int i = locs.indexOf(rp.pointA); - if (i >= 0) { - LocationPointWrapper lwp = new LocationPointWrapper(route, POI, new AmenityLocationPoint(a), - (float) rp.deviateDistance, i); - lwp.deviationDirectionRight = rp.deviationDirectionRight; - lwp.setAnnounce(announcePOI); - locationPoints.add(lwp); + AmenityRoutePoint routePoint = a.getRoutePoint(); + if (routePoint != null) { + int i = locs.indexOf(routePoint.pointA); + if (i >= 0) { + LocationPointWrapper lwp = new LocationPointWrapper(route, POI, new AmenityLocationPoint(a), + (float) routePoint.deviateDistance, i); + lwp.deviationDirectionRight = routePoint.deviationDirectionRight; + lwp.setAnnounce(announcePOI); + locationPoints.add(lwp); + } } } } } - private void calculateAlarms(RouteCalculationResult route, List array, ApplicationMode mode) { AlarmInfo prevSpeedCam = null; for (AlarmInfo i : route.getAlarmInfo()) { diff --git a/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java b/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java index 9ae44d87b1..b869ea992c 100644 --- a/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java +++ b/OsmAnd/src/net/osmand/plus/monitoring/OsmandMonitoringPlugin.java @@ -25,19 +25,19 @@ import com.google.android.material.slider.Slider; import net.osmand.AndroidUtils; import net.osmand.Location; import net.osmand.ValueHolder; -import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.NavigationService; import net.osmand.plus.OsmAndFormatter; import net.osmand.plus.OsmAndTaskManager.OsmAndTaskRunnable; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; import net.osmand.plus.activities.SavingTrackHelper; import net.osmand.plus.activities.SavingTrackHelper.SaveGpxResult; import net.osmand.plus.dashboard.tools.DashFragmentData; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.fragments.BaseSettingsFragment; import net.osmand.plus.views.MapInfoLayer; import net.osmand.plus.views.OsmandMapLayer.DrawSettings; @@ -333,18 +333,20 @@ public class OsmandMonitoringPlugin extends OsmandPlugin { startGPXMonitoring(activity, showTrackSelection); } } else if (item == R.string.clear_recorded_data) { - AlertDialog.Builder builder = new AlertDialog.Builder(UiUtilities.getThemedContext(activity, nightMode)); - builder.setTitle(R.string.clear_recorded_data); - builder.setMessage(R.string.are_you_sure); - builder.setNegativeButton(R.string.shared_string_cancel, null).setPositiveButton( - R.string.shared_string_ok, new DialogInterface.OnClickListener() { - @Override - public void onClick(DialogInterface dialog, int which) { - app.getSavingTrackHelper().clearRecordedData(true); - app.getNotificationHelper().refreshNotifications(); - } - }); - builder.show(); + if (AndroidUtils.isActivityNotDestroyed(activity)) { + AlertDialog.Builder builder = new AlertDialog.Builder(UiUtilities.getThemedContext(activity, nightMode)); + builder.setTitle(R.string.clear_recorded_data); + builder.setMessage(R.string.are_you_sure); + builder.setNegativeButton(R.string.shared_string_cancel, null).setPositiveButton( + R.string.shared_string_ok, new DialogInterface.OnClickListener() { + @Override + public void onClick(DialogInterface dialog, int which) { + app.getSavingTrackHelper().clearRecordedData(true); + app.getNotificationHelper().refreshNotifications(); + } + }); + builder.show(); + } } else if(item == R.string.gpx_monitoring_stop) { stopRecording(); } else if(item == R.string.gpx_start_new_segment) { @@ -481,19 +483,21 @@ public class OsmandMonitoringPlugin extends OsmandPlugin { } } - - public static void showIntervalChooseDialog(final Context uiCtx, final String patternMsg, + public static void showIntervalChooseDialog(final Activity activity, final String patternMsg, String title, final int[] seconds, final int[] minutes, final ValueHolder choice, final ValueHolder v, final boolean showTrackSelection, OnClickListener onclick) { - final OsmandApplication app = (OsmandApplication) uiCtx.getApplicationContext(); + if (!AndroidUtils.isActivityNotDestroyed(activity)) { + return; + } + final OsmandApplication app = (OsmandApplication) activity.getApplicationContext(); boolean nightMode; - if (uiCtx instanceof MapActivity) { + if (activity instanceof MapActivity) { nightMode = app.getDaynightHelper().isNightModeForMapControls(); } else { nightMode = !app.getSettings().isLightContent(); } - Context themedContext = UiUtilities.getThemedContext(uiCtx, nightMode); + Context themedContext = UiUtilities.getThemedContext(activity, nightMode); AlertDialog.Builder dlg = new AlertDialog.Builder(themedContext); dlg.setTitle(title); LinearLayout ll = createIntervalChooseLayout(app, themedContext, patternMsg, seconds, minutes, choice, v, showTrackSelection, nightMode); diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/VehicleParametersFragment.java b/OsmAnd/src/net/osmand/plus/settings/fragments/VehicleParametersFragment.java index 590be355fa..14ff53106b 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/VehicleParametersFragment.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/VehicleParametersFragment.java @@ -7,13 +7,13 @@ import android.widget.ImageView; import androidx.preference.Preference; import androidx.preference.PreferenceViewHolder; -import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.R; import net.osmand.plus.activities.SettingsBaseActivity; import net.osmand.plus.routing.RouteProvider.RouteService; import net.osmand.plus.routing.RoutingHelper; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.settings.preferences.ListPreferenceEx; import net.osmand.router.GeneralRouter; @@ -123,7 +123,8 @@ public class VehicleParametersFragment extends BaseSettingsFragment implements O public boolean onPreferenceClick(Preference preference) { if (preference.getKey().equals(GeneralRouter.DEFAULT_SPEED)) { RouteService routeService = getSelectedAppMode().getRouteService(); - showSeekbarSettingsDialog(getActivity(), routeService == RouteService.STRAIGHT, getSelectedAppMode()); + boolean defaultSpeedOnly = routeService == RouteService.STRAIGHT || routeService == RouteService.DIRECT_TO; + showSeekbarSettingsDialog(getActivity(), defaultSpeedOnly, getSelectedAppMode()); return true; } return super.onPreferenceClick(preference); diff --git a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java index bdd4b1a8b1..75bd4ed3db 100644 --- a/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java +++ b/OsmAnd/src/net/osmand/plus/srtmplugin/TerrainFragment.java @@ -35,8 +35,6 @@ import net.osmand.plus.ContextMenuAdapter; import net.osmand.plus.ContextMenuItem; import net.osmand.plus.OsmandApplication; import net.osmand.plus.OsmandPlugin; -import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.settings.backend.OsmandSettings.TerrainMode; import net.osmand.plus.R; import net.osmand.plus.UiUtilities; import net.osmand.plus.activities.MapActivity; @@ -46,6 +44,8 @@ import net.osmand.plus.download.DownloadResources; import net.osmand.plus.download.DownloadValidationManager; import net.osmand.plus.download.IndexItem; import net.osmand.plus.helpers.FontCache; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.backend.OsmandSettings.TerrainMode; import net.osmand.plus.widgets.style.CustomTypefaceSpan; import org.apache.commons.logging.Log; @@ -53,10 +53,10 @@ import org.apache.commons.logging.Log; import java.io.IOException; import java.util.List; -import static net.osmand.plus.settings.backend.OsmandSettings.TerrainMode.HILLSHADE; -import static net.osmand.plus.settings.backend.OsmandSettings.TerrainMode.SLOPE; import static net.osmand.plus.download.DownloadActivityType.HILLSHADE_FILE; import static net.osmand.plus.download.DownloadActivityType.SLOPE_FILE; +import static net.osmand.plus.settings.backend.OsmandSettings.TerrainMode.HILLSHADE; +import static net.osmand.plus.settings.backend.OsmandSettings.TerrainMode.SLOPE; import static net.osmand.plus.srtmplugin.SRTMPlugin.TERRAIN_MAX_ZOOM; import static net.osmand.plus.srtmplugin.SRTMPlugin.TERRAIN_MIN_ZOOM; @@ -527,18 +527,18 @@ public class TerrainFragment extends BaseOsmAndFragment implements View.OnClickL @Override public void downloadInProgress() { DownloadIndexesThread downloadThread = app.getDownloadThread(); - IndexItem downloadIndexItem = downloadThread.getCurrentDownloadingItem(); - if (downloadIndexItem != null) { - int downloadProgress = downloadThread.getCurrentDownloadingItemProgress(); - ArrayAdapter adapter = (ArrayAdapter) listAdapter; - for (int i = 0; i < adapter.getCount(); i++) { - ContextMenuItem item = adapter.getItem(i); - if (item != null && item.getProgressListener() != null) { - item.getProgressListener().onProgressChanged( - downloadIndexItem, downloadProgress, adapter, (int) adapter.getItemId(i), i); - } + IndexItem downloadIndexItem = downloadThread.getCurrentDownloadingItem(); + if (downloadIndexItem != null && listAdapter != null) { + int downloadProgress = downloadThread.getCurrentDownloadingItemProgress(); + ArrayAdapter adapter = (ArrayAdapter) listAdapter; + for (int i = 0; i < adapter.getCount(); i++) { + ContextMenuItem item = adapter.getItem(i); + if (item != null && item.getProgressListener() != null) { + item.getProgressListener().onProgressChanged( + downloadIndexItem, downloadProgress, adapter, (int) adapter.getItemId(i), i); } } + } } @Override diff --git a/OsmAnd/src/net/osmand/plus/wikipedia/WikipediaWebViewClient.java b/OsmAnd/src/net/osmand/plus/wikipedia/WikipediaWebViewClient.java index ccc40c5ad4..d2830e4b62 100644 --- a/OsmAnd/src/net/osmand/plus/wikipedia/WikipediaWebViewClient.java +++ b/OsmAnd/src/net/osmand/plus/wikipedia/WikipediaWebViewClient.java @@ -8,6 +8,7 @@ import android.webkit.WebViewClient; import androidx.fragment.app.FragmentActivity; +import net.osmand.AndroidUtils; import net.osmand.data.Amenity; import static net.osmand.plus.wikipedia.WikiArticleHelper.WIKI_DOMAIN; @@ -41,7 +42,9 @@ public class WikipediaWebViewClient extends WebViewClient { WikiArticleHelper.warnAboutExternalLoad(url, context, nightMode); } else { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - context.startActivity(i); + if (AndroidUtils.isIntentSafe(context, i)) { + context.startActivity(i); + } } return true; } diff --git a/OsmAnd/src/net/osmand/plus/wikivoyage/WikivoyageWebViewClient.java b/OsmAnd/src/net/osmand/plus/wikivoyage/WikivoyageWebViewClient.java index b9fb48a1c3..fe47a8f370 100644 --- a/OsmAnd/src/net/osmand/plus/wikivoyage/WikivoyageWebViewClient.java +++ b/OsmAnd/src/net/osmand/plus/wikivoyage/WikivoyageWebViewClient.java @@ -12,12 +12,13 @@ import androidx.annotation.Nullable; import androidx.fragment.app.FragmentActivity; import androidx.fragment.app.FragmentManager; +import net.osmand.AndroidUtils; import net.osmand.GPXUtilities; import net.osmand.data.LatLon; import net.osmand.data.PointDescription; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.activities.MapActivity; +import net.osmand.plus.settings.backend.OsmandSettings; import net.osmand.plus.wikipedia.WikiArticleHelper; import net.osmand.plus.wikivoyage.article.WikivoyageArticleDialogFragment; import net.osmand.plus.wikivoyage.data.TravelArticle; @@ -124,7 +125,9 @@ public class WikivoyageWebViewClient extends WebViewClient { } } else { Intent i = new Intent(Intent.ACTION_VIEW, Uri.parse(url)); - activity.startActivity(i); + if (AndroidUtils.isIntentSafe(activity, i)) { + activity.startActivity(i); + } } return true; } From 26805c4ae8002af5a35b941153070f14b3c0445c Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Mon, 25 May 2020 16:01:55 +0300 Subject: [PATCH 079/108] Fix possible IndexOutOfBoundsException --- OsmAnd/res/values/strings.xml | 1 + .../osmand/plus/OsmAndLocationSimulation.java | 2 +- .../plus/activities/MapActivityActions.java | 2 +- .../RoutingOptionsHelper.java | 2 +- .../osmand/plus/routing/RouteProvider.java | 23 ++++++++++--------- .../osmand/plus/routing/RoutingHelper.java | 2 +- 6 files changed, 17 insertions(+), 15 deletions(-) diff --git a/OsmAnd/res/values/strings.xml b/OsmAnd/res/values/strings.xml index 65a1231387..1579d4c11e 100644 --- a/OsmAnd/res/values/strings.xml +++ b/OsmAnd/res/values/strings.xml @@ -11,6 +11,7 @@ Thx - Hardy --> + OsmAnd GPX is not well formed, please contact support team to investigate further Unsupported type World overview map (detailed) Could not find any such profiles. diff --git a/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java b/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java index 8e4ae960c2..0b2683fcc6 100644 --- a/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java +++ b/OsmAnd/src/net/osmand/plus/OsmAndLocationSimulation.java @@ -79,7 +79,7 @@ public class OsmAndLocationSimulation { @Override public boolean processResult(GPXUtilities.GPXFile[] result) { GPXRouteParamsBuilder builder = new GPXRouteParamsBuilder(result[0], app.getSettings()); - startAnimationThread(app, builder.getPoints(), true, speedup.getValue() + 1); + startAnimationThread(app, builder.getPoints(app), true, speedup.getValue() + 1); if (runnable != null) { runnable.run(); } diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index c5ad4ec536..071b50dd5b 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -514,7 +514,7 @@ public class MapActivityActions implements DialogProvider { params.setCalculateOsmAndRouteParts(settings.GPX_ROUTE_CALC_OSMAND_PARTS.get()); params.setUseIntermediatePointsRTE(settings.GPX_CALCULATE_RTEPT.get()); params.setCalculateOsmAndRoute(settings.GPX_ROUTE_CALC.get()); - List ps = params.getPoints(); + List ps = params.getPoints(settings.getContext()); mapActivity.getRoutingHelper().setGpxParams(params); settings.FOLLOW_THE_GPX_ROUTE.set(result.path); if (!ps.isEmpty()) { diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java index 0ba3112d26..80359f7dca 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/RoutingOptionsHelper.java @@ -237,7 +237,7 @@ public class RoutingOptionsHelper { if (gpxParam.id == R.string.gpx_option_reverse_route) { rp.setReverse(selected); TargetPointsHelper tg = app.getTargetPointsHelper(); - List ps = rp.getPoints(); + List ps = rp.getPoints(app); if (ps.size() > 0) { Location first = ps.get(0); Location end = ps.get(ps.size() - 1); diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java index 2605e8a6c9..34fd072c85 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java @@ -19,15 +19,15 @@ import net.osmand.data.LatLon; import net.osmand.data.LocationPoint; import net.osmand.data.WptLocationPoint; import net.osmand.osm.io.NetworkUtils; -import net.osmand.plus.settings.backend.ApplicationMode; import net.osmand.plus.OsmandApplication; -import net.osmand.plus.settings.backend.OsmandSettings; -import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference; import net.osmand.plus.R; import net.osmand.plus.TargetPointsHelper; import net.osmand.plus.TargetPointsHelper.TargetPoint; import net.osmand.plus.Version; import net.osmand.plus.render.NativeOsmandLibrary; +import net.osmand.plus.settings.backend.ApplicationMode; +import net.osmand.plus.settings.backend.OsmandSettings; +import net.osmand.plus.settings.backend.OsmandSettings.CommonPreference; import net.osmand.router.GeneralRouter; import net.osmand.router.GeneralRouter.RoutingParameter; import net.osmand.router.GeneralRouter.RoutingParameterType; @@ -173,12 +173,14 @@ public class RouteProvider { return passWholeRoute; } - public GPXRouteParams build(Location start, OsmandSettings settings) { + public GPXRouteParams build(OsmandApplication app) { GPXRouteParams res = new GPXRouteParams(); - res.prepareGPXFile(this); -// if (passWholeRoute && start != null) { -// res.points.add(0, start); -// } + try { + res.prepareGPXFile(this); + } catch (Exception e) { + log.error(e); + app.showShortToastMessage(app.getString(R.string.gpx_parse_error)); + } return res; } @@ -190,9 +192,8 @@ public class RouteProvider { return file; } - public List getPoints() { - GPXRouteParams copy = new GPXRouteParams(); - copy.prepareGPXFile(this); + public List getPoints(OsmandApplication app) { + GPXRouteParams copy = build(app); return copy.getPoints(); } } diff --git a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java index f60e4f7ea9..9a4fb32f83 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java +++ b/OsmAnd/src/net/osmand/plus/routing/RoutingHelper.java @@ -1172,7 +1172,7 @@ public class RoutingHelper { params.start = start; params.end = end; params.intermediates = intermediates; - params.gpxRoute = gpxRoute == null ? null : gpxRoute.build(start, settings); + params.gpxRoute = gpxRoute == null ? null : gpxRoute.build(app); params.onlyStartPointChanged = onlyStartPointChanged; if (recalculateCountInInterval < RECALCULATE_THRESHOLD_COUNT_CAUSING_FULL_RECALCULATE || (gpxRoute != null && gpxRoute.isPassWholeRoute() && isDeviatedFromRoute)) { From f288b9bffa9dbd6af987dc0c04f6f5019e184450 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 25 May 2020 19:40:48 +0300 Subject: [PATCH 080/108] Fix map button vector icon --- .../map_compass_niu_template.png | Bin 2590 -> 0 bytes .../map_compass_niu_white_template.png | Bin 2659 -> 0 bytes OsmAnd/res/drawable-hdpi/map_dashboard.png | Bin 1157 -> 0 bytes OsmAnd/res/drawable-hdpi/map_directions.png | Bin 1305 -> 0 bytes OsmAnd/res/drawable-hdpi/map_down.png | Bin 1289 -> 0 bytes OsmAnd/res/drawable-hdpi/map_drawer.png | Bin 1080 -> 0 bytes OsmAnd/res/drawable-hdpi/map_favorite.png | Bin 1269 -> 0 bytes OsmAnd/res/drawable-hdpi/map_layer_dark.png | Bin 1694 -> 0 bytes OsmAnd/res/drawable-hdpi/map_layer_night.png | Bin 1681 -> 0 bytes .../drawable-hdpi/map_overflow_menu_white.png | Bin 1385 -> 0 bytes OsmAnd/res/drawable-hdpi/map_search_dark.png | Bin 1561 -> 0 bytes OsmAnd/res/drawable-hdpi/map_search_night.png | Bin 1571 -> 0 bytes OsmAnd/res/drawable-hdpi/map_small_group.png | Bin 1117 -> 0 bytes .../drawable-hdpi/map_start_navigation.png | Bin 1437 -> 0 bytes OsmAnd/res/drawable-hdpi/map_up.png | Bin 1268 -> 0 bytes .../res/drawable-hdpi/map_zoom_in_night.png | Bin 1092 -> 0 bytes .../res/drawable-hdpi/map_zoom_out_night.png | Bin 1068 -> 0 bytes OsmAnd/res/drawable-mdpi/map_dashboard.png | Bin 1110 -> 0 bytes OsmAnd/res/drawable-mdpi/map_directions.png | Bin 1210 -> 0 bytes OsmAnd/res/drawable-mdpi/map_down.png | Bin 1195 -> 0 bytes OsmAnd/res/drawable-mdpi/map_drawer.png | Bin 1062 -> 0 bytes OsmAnd/res/drawable-mdpi/map_favorite.png | Bin 1162 -> 0 bytes OsmAnd/res/drawable-mdpi/map_layer_dark.png | Bin 1478 -> 0 bytes OsmAnd/res/drawable-mdpi/map_layer_night.png | Bin 1484 -> 0 bytes .../drawable-mdpi/map_overflow_menu_white.png | Bin 1141 -> 0 bytes OsmAnd/res/drawable-mdpi/map_search_dark.png | Bin 1343 -> 0 bytes OsmAnd/res/drawable-mdpi/map_search_night.png | Bin 1343 -> 0 bytes OsmAnd/res/drawable-mdpi/map_small_group.png | Bin 1054 -> 0 bytes .../drawable-mdpi/map_start_navigation.png | Bin 1262 -> 0 bytes OsmAnd/res/drawable-mdpi/map_up.png | Bin 1190 -> 0 bytes .../res/drawable-mdpi/map_zoom_in_night.png | Bin 1069 -> 0 bytes .../res/drawable-mdpi/map_zoom_out_night.png | Bin 1047 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_dashboard.png | Bin 1222 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_directions.png | Bin 1387 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_down.png | Bin 1405 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_drawer.png | Bin 1095 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_favorite.png | Bin 1368 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_layer_dark.png | Bin 2105 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_layer_night.png | Bin 2109 -> 0 bytes .../map_overflow_menu_white.png | Bin 1337 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_search_dark.png | Bin 1779 -> 0 bytes .../res/drawable-xhdpi/map_search_night.png | Bin 1780 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_small_group.png | Bin 1101 -> 0 bytes .../drawable-xhdpi/map_start_navigation.png | Bin 1664 -> 0 bytes OsmAnd/res/drawable-xhdpi/map_up.png | Bin 1369 -> 0 bytes .../res/drawable-xhdpi/map_zoom_in_night.png | Bin 1110 -> 0 bytes .../res/drawable-xhdpi/map_zoom_out_night.png | Bin 1084 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_dashboard.png | Bin 1339 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_directions.png | Bin 1598 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_down.png | Bin 1621 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_drawer.png | Bin 1157 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_favorite.png | Bin 1547 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_layer_dark.png | Bin 2452 -> 0 bytes .../res/drawable-xxhdpi/map_layer_night.png | Bin 2362 -> 0 bytes .../map_overflow_menu_white.png | Bin 1598 -> 0 bytes .../res/drawable-xxhdpi/map_search_dark.png | Bin 2164 -> 0 bytes .../res/drawable-xxhdpi/map_search_night.png | Bin 2163 -> 0 bytes .../res/drawable-xxhdpi/map_small_group.png | Bin 1148 -> 0 bytes .../drawable-xxhdpi/map_start_navigation.png | Bin 1936 -> 0 bytes OsmAnd/res/drawable-xxhdpi/map_up.png | Bin 1576 -> 0 bytes .../res/drawable-xxhdpi/map_zoom_in_night.png | Bin 1158 -> 0 bytes .../drawable-xxhdpi/map_zoom_out_night.png | Bin 1129 -> 0 bytes OsmAnd/res/drawable/ic_actions_menu.xml | 45 ++++++++++++++ OsmAnd/res/drawable/ic_compass.xml | 13 +++++ OsmAnd/res/drawable/ic_compass_bearing.xml | 12 ++++ .../res/drawable/ic_compass_bearing_white.xml | 12 ++++ OsmAnd/res/drawable/ic_compass_niu.xml | 12 ++++ OsmAnd/res/drawable/ic_compass_niu_white.xml | 12 ++++ OsmAnd/res/drawable/ic_compass_white.xml | 13 +++++ ...ic_dashboard_dark.xml => ic_dashboard.xml} | 2 +- ...map_my_location.xml => ic_my_location.xml} | 0 ...p_quick_action.xml => ic_quick_action.xml} | 0 .../{map_zoom_in.xml => ic_zoom_in.xml} | 2 +- .../{map_zoom_out.xml => ic_zoom_out.xml} | 2 +- OsmAnd/res/layout/dashboard_toolbar.xml | 1 + OsmAnd/res/layout/favourite_list_item.xml | 2 +- .../layout/fragment_map_markers_dialog.xml | 1 + ...ent_marker_options_bottom_sheet_dialog.xml | 2 +- .../res/layout/global_preference_toolbar.xml | 1 + OsmAnd/res/layout/map_marker_item.xml | 2 +- .../res/layout/maps_in_category_fragment.xml | 7 ++- OsmAnd/res/layout/mode_view.xml | 2 +- .../layout/mode_view_route_preparation.xml | 2 +- OsmAnd/res/layout/search_dialog_fragment.xml | 2 + OsmAnd/res/layout/waypoint_reached.xml | 2 +- OsmAnd/res/values/colors.xml | 2 + OsmAnd/src/net/osmand/AndroidUtils.java | 8 ++- OsmAnd/src/net/osmand/plus/UiUtilities.java | 2 +- .../plus/activities/MapActivityActions.java | 4 +- .../osmand/plus/dashboard/DashboardOnMap.java | 6 +- .../plus/mapcontextmenu/MapContextMenu.java | 2 +- .../MapContextMenuFragment.java | 6 +- .../editors/SelectCategoryDialogFragment.java | 3 +- .../plus/myplaces/AvailableGPXFragment.java | 2 +- .../ChooseRouteFragment.java | 10 ++-- .../MapRouteInfoMenu.java | 2 +- .../ImportedSettingsItemsAdapter.java | 2 +- .../osmand/plus/views/MapControlsLayer.java | 55 +++++++++--------- .../net/osmand/plus/views/MapInfoLayer.java | 8 ++- .../plus/views/MapQuickActionLayer.java | 12 +--- .../net/osmand/plus/views/OsmandMapLayer.java | 10 ++++ .../views/mapwidgets/MapWidgetRegistry.java | 2 +- 102 files changed, 210 insertions(+), 75 deletions(-) delete mode 100644 OsmAnd/res/drawable-hdpi/map_compass_niu_template.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_compass_niu_white_template.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_dashboard.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_directions.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_down.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_drawer.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_favorite.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_layer_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_layer_night.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_overflow_menu_white.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_search_dark.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_search_night.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_small_group.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_start_navigation.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_up.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_zoom_in_night.png delete mode 100644 OsmAnd/res/drawable-hdpi/map_zoom_out_night.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_dashboard.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_directions.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_down.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_drawer.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_favorite.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_layer_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_layer_night.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_overflow_menu_white.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_search_dark.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_search_night.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_small_group.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_start_navigation.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_up.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_zoom_in_night.png delete mode 100644 OsmAnd/res/drawable-mdpi/map_zoom_out_night.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_dashboard.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_directions.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_down.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_drawer.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_favorite.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_layer_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_layer_night.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_overflow_menu_white.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_search_dark.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_search_night.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_small_group.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_start_navigation.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_up.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_zoom_in_night.png delete mode 100644 OsmAnd/res/drawable-xhdpi/map_zoom_out_night.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_dashboard.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_directions.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_down.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_drawer.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_favorite.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_layer_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_layer_night.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_overflow_menu_white.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_search_dark.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_search_night.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_small_group.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_start_navigation.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_up.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_zoom_in_night.png delete mode 100644 OsmAnd/res/drawable-xxhdpi/map_zoom_out_night.png create mode 100644 OsmAnd/res/drawable/ic_actions_menu.xml create mode 100644 OsmAnd/res/drawable/ic_compass.xml create mode 100644 OsmAnd/res/drawable/ic_compass_bearing.xml create mode 100644 OsmAnd/res/drawable/ic_compass_bearing_white.xml create mode 100644 OsmAnd/res/drawable/ic_compass_niu.xml create mode 100644 OsmAnd/res/drawable/ic_compass_niu_white.xml create mode 100644 OsmAnd/res/drawable/ic_compass_white.xml rename OsmAnd/res/drawable/{ic_dashboard_dark.xml => ic_dashboard.xml} (93%) rename OsmAnd/res/drawable/{map_my_location.xml => ic_my_location.xml} (100%) rename OsmAnd/res/drawable/{map_quick_action.xml => ic_quick_action.xml} (100%) rename OsmAnd/res/drawable/{map_zoom_in.xml => ic_zoom_in.xml} (88%) rename OsmAnd/res/drawable/{map_zoom_out.xml => ic_zoom_out.xml} (87%) diff --git a/OsmAnd/res/drawable-hdpi/map_compass_niu_template.png b/OsmAnd/res/drawable-hdpi/map_compass_niu_template.png deleted file mode 100644 index 1297b4378cb35bdfe3d3dd25a55fc475821c4f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2590 zcmb_e`9qS~8dj2&+@M9wrAVg9GD|G8(p)h!4J)l&a{?_%6ir2RazQ8iT*;ebc3qlE zGm6N`FrFE^2^oX0|9|lc^oFC&JEI> z^l`<{25cECv2_~ltE4K>F#hqB>Oa#BULH-l9VM!J*R-GU`xk`JNV%4lrqR_OO)!O` zMP6*HSgWIxI)J4eM-25pH}?b{-b2h8T#%bck1Lr&>iXCwJg0}mR{GQh@J1_WvV=16@k zWy+NY)qaJE%1W9OJxhv6JWNMW=A!@PjJ5KvZ;*Anm$ERGiRyKty^GA89`VZ|Z3XgO zxYq=frFyvec|Yv)9e_#S{5YRAei=sa|4fUCV~?%ExzSlD+DU%)xDJEAH- zJr=m7g1>wGfs)({casC-dbdH5=_-YRgTac9{{*bcf{t@rk-oIIy8vs*R_s8HM@x{h zD8{9kI!FN^dUYEFH!8b>2*1kCZvoA%>SKMxxzxLD&?veqaZk^Gz}dNM6zyGYW>PN+ zF8jowmy&)dnlU{vRubS;F`j!6TD3UN=kR@~_4}`}pSe0H29npv>m8K}^-M;IY{(#D zDgRl~kS4;cR-UpLK*A3QW-|;-L>tevrPEQC3pMfwGtu>lRkt1*VxK3(xu>v@zUi|v+UZ_u34Muc#^fwo9x>b$P zGB`I9AJ%>E%BE2N?IsU=vq-)-LaT@D1bzZ1E6?5=ZWUd#eZ>Q#-Az3SeLCb~TRZ1>^oir?dD4VZVs8R?krs@+gRKe*1NBp(04po5K?gU zOKaV2v|ul#{I8!vEydwt4c5hsaHfyu`#PSb@b$uL4(z0L;+^j7xInQPWa8!R-3+^l~D5rK9n_t9V#Ey@;>Q7kN3jzd(EcBhDON?sH5O1x{7>+lm@0SF8a1ZXS z)~?=fm}&TGX-9wZk9i3f1=%lc$^-?JRB0~lX6M&Kz0BO1k5+Ou_6kQl)|y=RValmM zU##6^P*POlKVvfVa46$!y|ERZp=i2X!3|@^t63E8DV==lI$4U>YQo5@VxnLaYT!3NjHi^dtS-43Mu%0 zQbTBCO`xztCk{x0|KPmHAtp1o#4PP#%dbzd_KwVj&-H{2hIQ@h?dZwwmd@kIr!$?6 ziF{6oi~&T`9>>tg+DkCP zBxo$$J|g0O>vp8PJ#ndAGGOCKTfBeh&Gm+X&&|c|-2~G!Ws9`vCEdXCIn$k?Jegre0K&x89^{pfrzw5XbI>pPB^+>-to>N`i6aQ11-ne*<+R$h?r_}`0{z@7< zb5U(GPy2i4$2y_O*VL7Jw)`C$-wwnI^6D-%75U1&s#r|qvPaTGdH8HTau>;|eD$4p zDt}Ps{n3oF*>2skW*vjNdURzTk2tKyZN$`;nAILhN*~;RYfsZi=k5Dw7M?xuhykRHQ~&!0oV|V-KN^ghi#$yFySIH##M}FyN3y- z@!k_P(F|Q~xvwf@Z*Ww27qdQM8hXlE3qOlsQOK0Tf!qO45TdvP#%p2yQy39>GxM;e zH9#Fe2?(RvAZdr5lK&|ttfA)hUfxzEBGC-~zf}M{o3E#(2=w&|9pV?iHIVInt zXB8Zja$MADp{cMdBCo&|I3PsH=M`^xA6v1=3IhJRaaRhl;NmxMK>&j~IuFmHUjtt+ z8A+#X(4bV0W4o%c_7dJ<``|bz!&xLSL#%O@GSF&(tQC_(xo4wIMBZ8FlDa0-g9)Ry z5VnEw_ikjZ_D%tT9!$sA&-1{WBezb}xZhI+{W5-d^Pv=zjg8Dnz6IX9A%ac5Z8&P%KJ~i^u#3!zpC`r^NW#3QTqW#RBbT^?2|*r{v;9 Kz*ji@l>A>IqRsmN diff --git a/OsmAnd/res/drawable-hdpi/map_compass_niu_white_template.png b/OsmAnd/res/drawable-hdpi/map_compass_niu_white_template.png deleted file mode 100644 index 9b0a2cbc3abe06f374f78b941536bf7ceaa0df30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2659 zcmd5;`CpRx7Dg&GH3b_JOcQOoHDfL`skws|W;$6KXfBnwWeJX3ZXr3=%$tf#+1|_Eqr(96n#szN*A^H(5MeZy2pSVA~-|zQ1=RD7O&iU!Rede^sE=@yC z2n4dr^W9y3$-Ww!kw=*`S z3GbaHr>+jwTKxUa-=gp<&+C~**s~95E+#8SUo#mX0O!@ zbq&f%c`OnwiQJ^{ldQ_ zyJrc>fr1|%S2l2$3lBkOsSXkVj2*=4ibVT(>h>HWUsfE&%|7U>O zRB$&i$Kmji=7l;DIH$Ol$BhLnDECV)!phFZ`JTRY*bX4ect6q{>tx;yc;0bzunc8F z;?9I|zva#@xq1{^Ny9-L!UI@x`M?U~`Zw`jZxy-v=-Ri)P^;w?!!4@O2J$u7syi1! zCfnIT7cpTc%t76#@LZ&1-k};1wjD$Z_IUB-qnElh;p&cfYvPR*VlJWp&1cXKfXNp& zc){D%$;rtwaK6g!>?~*J926+rkHma3dn6K>4CU!#VX}ohghwk!3$w*PHh>H*KAvX~ zo_h&2ID(lPG=oMmAu`zmdcez{&Leoh5Yjv_fR5Xs4QU9G7-FSUU}7ieT<2QueG)U} z4$CZ_Ynq2BAkN6;Rv6;(>|^~HlJD$NLashyzfRIt5i*584*p} zIEUa9wRi36rKd81_*^6kWq-DDv3&SON?WkY(T2$09?ZoC)EM#+p_;rfSQBeMI*=rZ z!ETVE=0eiEV+RaGrKI*2vlhZjf=>!3jT6`!#>>lTZV#r0ko)RPMk|$x>vbbWXOwQM@JWsHAM0EnOMaXG#)jYh6v@l3Ach9j z#0-pdP}7UQ-k_{jUF|oX_i&R1We&e6|4^rVf*(Mv#9PcbM6Lc1xmqnTB`d2H4eV9^ z2<4+ZYGhmGC)UgN<7WgDtgsq_jJa^xW3)Y>B(m8=C^IH zK1!AS{?m2Q>6I;WmC3`^xxE{#-fk9MFV^pc(5t?MK^&@#-K)6*P^7ZdHBYkgk>u5N zg3II`L*IBt5na!Ayn;7iLVnsOH~8avK4qf9m3E6Sm!8$ScNfZS)Rl3gZJc`^KsP94 z*QWob9%e3p{pn#!q(d8 z__Sc@%C^A*lH=H({ZkaORehFObKqFy4=iE}qvF@=qK#&{!L^6}H)Ci`ibBQ%>&}S* ziKC)$rm;iMilBuv;{Ud@^tNm5MH()ojeJCXVGErW1it+9rUeWGb8OQN-TE z%BVklsRnNn-y3Hkxk>I~TI|sSGZ`Q|nJZ6LFwiH{Gy6y?XuD_4wWm-N)5TX&qp(H& zS|s>fo}fWmQ$3_=;tm&njYN#<`=eN5p| zY;1*`$Nd?}Wt+{H3p;qy>UMPbnMSX!T+_|2<4*R8?z!Nf{OK)!eFQ^ z6j!8mQ*05fnkvIJ+6rC;>fFMLmu0qK4BUQZ-yv{~he@t)f^h~<1Bl`M7+dmfQyHbIM~a-@V6FC zKOtWKTYXDfFgHzB@uC)?TS6w>4#T=_7$6Jp+O~Awo3I#; w`?eyW$ROx%H*g#4y`5zCfBrZc)(#y)y`-f+vQ-2B2_c>*P9LvzyY%ya0S7qYUH||9 diff --git a/OsmAnd/res/drawable-hdpi/map_dashboard.png b/OsmAnd/res/drawable-hdpi/map_dashboard.png deleted file mode 100644 index 04f8e5559aebe51d7f98ffad5f09d60592d57f03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmbVMO=#3u91kkfT3XqI_z4nI4=$L=$4oMlIAa|rGwr}mtT*Wi`%K@F22qP4^*{F_8i3f};<^64cF! z{r|%hMJ*n;%N1NH{-y%tMD-98tveoJQ&g&_?&)9@V%mViwwq?&-MGonwwY#jN=3ft zW#Ne3H|fK{$^J5!90iKW^lYJ1b(JV^AlB)+Q*{Hio@N?)Rk9C{IfiaP@MxNubE;At zptHz_v=o(DzzcCYp+p5qPAG{@v`A!*PjVv9@`@_OR9>W;7elQ1rlpp&eA5<@(##0P zp2~5xS}j_OMUg+u35ud{yvT_nOAu@@;bOhcx{0WQIBZY+on$`c;sN-#iUJ|Ok5x?5zDyB`}0 zfy5hiyKj@C=v57YF$cQ1prsk|C2HEH8kbDdFl3n(WjW3&d|Y7_#S~c?3Qz(@99o9i z(z6g>5_nBX3VCwJ1tAyDWMn0uOC|&%DGT{ruEj050oGjrTefXtyUES{kgH~WsAJ@p z5vsPjU|K9*1V$M-JV{vuZEk1GFq7W+ed| zvw+M>Mm)wQfdp9DkN|+Z1QV9RH2LPw=8q#zabdH3*F3Ew(vjhIeiVo>KTOai6XcUo z`Izp#MaJw>LCciu4_;R?9S8Z&huSRl0YuPzRi|WLsS18Ka=?-(j5V9>_y|%mCtK4L&s+GQ`HAK tq5b0NlPk2_Gl$1_{MXx+8TxBcC-w5Ia_VT$=H=m!p^)p>rnl`q^c5($eIoz> diff --git a/OsmAnd/res/drawable-hdpi/map_directions.png b/OsmAnd/res/drawable-hdpi/map_directions.png deleted file mode 100644 index ad3e3daaa351c66863561158fd96aae8ada8386d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1305 zcmbVMYi!$86!xHOeXtD}u(T?Y>oSzmIesK|YOC4S*ba$Ay3UPgK?CZ?O=GpTQ`=3_ ziXSjq4XTb!z@`a)3{)OPV-N9?DugyVQ8qwm8k2ZPLsV2_>NX7_Z9+U$ZqlakquLKF z+4r7%&v(vuUVgr#{h_thb=3%htWCs48Lsyi-^$hSJBu7V2$xz<>h?PAw3k;LfVAnh z3ebe9^a2?u`q01`(25|p=8ROg*PVQr*K9MO6m;fRkS|fp(^M#tO$1P z;}aNa=n<@oNs`H|05V2=*a4lx?I~@zPvdlK>lU=Nz(WHj@D#LQ_FFDrh+rkVJlq$L z2@EZ%czqFUkyLlG0~KrspiF?pHIfRUVJ<*1Y?upgMrkM$WD7x)ILYx$kSA$$>A|2k zM^E#z7+dlMr3jYsyev-;`FuW*4+dABQ%N9i7YL1ch z4BJAB78TVV^dcB!x)_3)O(vHOTkcY#V9JPsk|n4BNtk9au9CLv$>3iaD{8x`p)4R| z;M#+Z2J4Y-EQ4Y0Ztke42-)!49Rn6c=@)Hn&;*v35F;483FwB-hZtQ~RhGqRmJQ(? z8RBq`(`lRq6ks$p1k$QrwzCqRiAoa5QBqiv1d5VEZCtcP2)5Bdu_a1NT&#>uSgxm7 z8YufVpzkHDcvCDdI6(1iCuQ6H?|q>rK+R;F2mC8yxUYP(_+*jaEu(# zV~%a2r9AV-3LJEXWzsZY@NhU7#`SQB!Bv$4I7NoiVW5W;zyfRuum9it5s(y7Y?l8t zPx%OTWO2JZ3Q$-cCSbt{a^R>Or`BCZkX2klY)ch>xboeXRnyzzQczq_V3#; zSJ`y_!e87Q@v5n*uE!fj-+Ft~Oa<7pV?ymoO?LaJ2Oo%yjO|e-ROKT%RT5z*Xb#R|R(8ZRaMYXZAk&$@uwurf*ao89!E|*YocP{_4}(jh(mWzSsQK@sX+v zzNX#VNA6NS zAjV8T6|4DUL{^@XpS>n@p04}t>CFvmlEIp@3xA&Ny4-XUscigpJ~RKRQT$mYq;~OW Hv}e~pYW2PX diff --git a/OsmAnd/res/drawable-hdpi/map_down.png b/OsmAnd/res/drawable-hdpi/map_down.png deleted file mode 100644 index 776da36efdb1b1c4a6d88a4fb2f46ad07143864e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1289 zcmaJ>ZEO=|96vK%VM!w|SycRT-bAT*uf3Pvu@1Ig=L)pUQqviX;pyGe_So*OySveD zd{AI6F?^U3jpLI>NT%S+X2iHm;%kfpL1ToV@ePJAG3cU%Xht+X*R_)m3zz5adHer< z|Mz>cJM}=YX-yM`VZlU~nnv^8{=2LZeJ@~RV`#d=i}!fj?Yvh84#e7ZI|uQE2?{U` zfj-zj16whyVc5v@cs@MWlqSwd(GYu#8W0j(E$cn%f}D@x2wzf0hT9wo9u zl1Y|guxNA*IdJ<>Dx(ecYO+pjY{OeC3L-F}2k?s7XSqrxN>q6jwDyl_0Y3zSG|49nw^OtFF}$#fypmQsYr4=b zN)$b>q|kJ^T&Bul%61AgE6Xy?a5Tq}NP=_+Ee}*k%WbJMsL<6MqvRR3h5L*kXAgK$ z0$IA?f>}x?7l|#m7AO=lx&lfxOEI)*`hHcVT`vv)H)Ba@H#1m*bQ-$$fTN*&2;o^@L`!3RaTA1BPz?XaXupQY)4p%NL(i`wyRwv(~#zIqjO7j4gWi*^Z*#j07y*JTY$x65wGPt$_eDs+t9Q15hX6R*ZuF_y3) z&+3tglm{e;XaXq%K1TwL=SYbc7@5^sUCwhv4X=^7ZBCzTNe~rWH@Dp8fFB7k@pCkKAY4M^$r6=)_8Ta|`k6x;Ot$wT-?VZ5U^U zA2+5$p-=bT`c=Pp?a=dUN6t*WkT7lu9$0?psp|OrvDHV%6nBKwqJGg8Cd=&rh>JhskDS#|wMp6pH6==;HX~>I(pas1#=a7_6GBLc zKcJ!=87d?O21XcQU;!2+V1bDZsYr;q2skHk=}^^@eZIT*e($~Cd%uVE<;C%lOCub| zjaMtB23x0-_xuq1e&hD`*m9AUTXcoAX%~fCyUiAD z)s{?~cv+O#WMeO2-W)eG8wbeVz?8S}y6YE&pD$ktyz3N%HLWJqf+Fs?m7Nf;>?}9! zoedj0!t8Z^CN>#>hbiJ?Z_|&=xFGa!P4=H0ivr&>p&JFEpH!<>=Zhr7yq490Ey*fx zz^tt41~jhm3fqfPUQ{F?K~u|_lEM!jfkg|Qw%I5x3}UfeLFiB#n4;M2cC+1FmW1n~ z3?URHMN|~PEI_pFQxpR~no1E$II=@Gpf2(G1QA(eixvcyX}<(7sMU^v{b)cGqfCrZ zAj(-u^t`05o^?bU_Idcd)Y%5|8ikY`Ul9U`PmK2iibVa}a24)dt8y3Xm;bV;r;* zl=H&C-#Niwe@@v6t0PF$F_8l8oSt(4%Ii5G%a~ExMi?Ls+cIS6iXjUkOHoWl=fo(b zM{GWm-(z90&9Stw&-4^B;e2{iyud_vqgtA4#$SGXmPa^#?A+_s-+vz+4%4fZ2k*aA zwetL_)mR-Hova&2zy2H@9=v<8doY^GWcDX^_a~SvJ|c5zc=7{Syqn>|c&Iu3^~vKz O%hmF7>Dm0Pd;b95@KoUd diff --git a/OsmAnd/res/drawable-hdpi/map_favorite.png b/OsmAnd/res/drawable-hdpi/map_favorite.png deleted file mode 100644 index e8307094fa23a45135f82e5e546041ae7aab7e9a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1269 zcmbVMTWB0r7@j7$*uaL0(Zu@TI4!j5&NVx`GvjXS>?NBOcbjb2c0r|?ojIEf$y_os z$!@kQ=7QRw54E)q#cFK5pv8oM2*rkmst+nri&Qiz0UMMmC{n6eOEI3=>_#6#9~_uD z=RfEF{{Q=LGuf3+c$>C1Aqe74cE&PrZFAq-J@ET|F?<~^_c-yKv)3p%Macq)s2F*G zCN-%SWPqfM41NYe2+}yLW^+z1^_UtlL`gFt8bLz4OQt0E0|(86UR4icznz`O zP*n+I``HwgGNYhR?JQehZ#kWn%l$I1V7qsrp^^X%Xuy%sk~W~*LMe<@?Fw-39+Mba zRdM>m*cz!^stb)87C>1dfXfu^M}s^;vwIdka~xA3$zric6x#{I>LqEO=Shko83u3Rhcuu&$ygYJH-w@p0>@EQJIiu7&2co&QhplG z^Kt;^0tzTl4A0AoRJXGcp5o{jBT~U&FfP(`oQ;T)jt(&pjMEGk;iK_7HmTc=q|2c0 zTZO)B*uX8ZLev71V^~?k7^rtaSD)b+cAsIQ(P*{m=+6DBt{6r80k=$RQOAI#4g;mb zGBmWBXF=V7LxE=e49ocOpd_(4o%b_1pO*?a$4dTuo(u3iM`Ja-@_+M3LQ;cO=8P)&->WP{vW*#vH7*e z$s?U}jbFX~%}YDyZaaCkEju&)X#VDoza|eo^?vKIqm{+u%lztmFLN;P<_G)cU!1)$ zcymhJ{PObl9N{g`&7|&(5b18u0RQFK(-)q&=;{8t`NM`gmPdV89^N zF26NSyffC)IkCNS^ib+t*7WQ!k;H7n8&{g>(*4bMFCAQX_v*z;aLcKl6|u7L4(~i`V(LA8(vEec#0Amnw;c10PANKJ)Uf z1LwDV^6B9}{om$>g|sK$E)6wYSZNJkyEL=<`&6a1 Y2YE(mNqn~_^pN`_O2*T%nMlw0KZcI80ssI2 diff --git a/OsmAnd/res/drawable-hdpi/map_layer_dark.png b/OsmAnd/res/drawable-hdpi/map_layer_dark.png deleted file mode 100644 index 58b508506e0f14ec880ad9695c3151b191c0eead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1694 zcmbVNYfuwc6b=eRr791nfL2`=TR=&6H}74I9g+}@62uT8qRz0%Zb$|;8#gNiREppO zwJlE7Hi+0NPz14xsNjf-4=BDWYCED+EiH~X6-R3;cGQt>c(p$qe{^T=-h1wz@0{D=g-fIX1 z22|KgB{)dRq)!6WG(!SXp-fw-PEL+6M=Ye73qiVbTtkWCQUE~$VmZ;NaO+qjKTsdqEHZ4k`T*bc-YR{@Dfx8Yh>P~ibs%mNt{?B)1qQTrBG=Q zR62syIb1C6u#m&P?VRsHtW^6>ET(2ioTV8fO=k^vL6VJTX_t+50&4X@)q&_#yMv%} zTru7<4MwdY8GANKXc?LU2J(#A-@-v5L97yj3mC!Wa)At&AOajVO9ikF5O!)9)0GIoJw4tdCms#R0c% z?ta?@)z+@Kswilhv2H_NU^jig@u{dcA*!s#m+ivK@E7G7)_bMp)RDW6sJxoWU}Z{P zqOI)p;^;}gU1%>9^{3p@R{PZcRQpws0hA{3eQFwnujJJUq1P9tnqx{pS$#`&QZ=~P zEKRN7q5h@`tiNEm+t=Rc5gKo+g0`DlKQfLwp;)c^^aio4>gu<#S4s~CXTsTEQfSn% zNz0xAM=qG+b`(E4vZ$y#y}hU-&{EYM`zqfVURQV$I6v*d?aL&89eJ;;ry;y8jqJ@2 z-TOFwR5Ra|KHau1IX$6wVdMudcNTkQO$ra1{XEQaG|crmm2g;J(J`Zm?;rnE+;t)X zEiv?tA8QKT89B3U>GjQV$EEg=T@RK+1z)F!t>H~<$-i8SsuB(uq;IxWh^}-7WM!t^ z^GK%RD`nXFg+aS3{`U9queHqDji08Njd%RC=#rjN@tKwoXF&7KYpRrph-?r4&`q=E zlY($3zb>=ny@DxS*h5QsaPB1qt=}ZR)p#mx>gr>wm#CAwLgpd*Ep=tVB7AnZS#UgN zN=6A&_wv$=EGMCDef-GGo_iMjv+v9wmK-j7E^VVQeQEste2={OiLbDv1vv;EIl}efLRpp~b<>U#S;+VdSnP=0g!4&~$@rO;#Rr4=q_x%A@Zr&L=*S}oT v91vf;;g`PWiF;lM|LX5o_cwRYKK{Jr^TtLU?_TTU{bT6j6E)wd(hL6q&X0Hf diff --git a/OsmAnd/res/drawable-hdpi/map_layer_night.png b/OsmAnd/res/drawable-hdpi/map_layer_night.png deleted file mode 100644 index c77e9f2bab3c78999cb67802f78bcb764f9d722a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1681 zcmbVNc~BE)6b~Rr6{_J-#CEz}0ng3uCfOWoqCyfRmdlulVMJxK*^m{IjoF0+JSt!- zgsG0zR;K7^m1=c7U^=2LDpD<8$kHgFkM7Lw_r33XzxRIc znyt*rm=Q5FZm2*Yh|s5M4g4DKf5Srf@2`UDYJM5b>CD`0#>ROFHzi22G8PKZJBU2W zKoQpBMJFkhKoC?!8_k?KJq;%rhlud&h`bILj}{12)4VQ%%%?cOLgmp;HTXwk69~{& zH8=-LN77vy%1)=2xT)DC8Ah@spHy1GX;T4}7v~K)D2@QUjsho(d(~jSU7X+hk6{q# zSK;#2;44z*^ejNbxG4Y=$siIzrGQ*1LNS?KDW438c^O6&uo!_5C5}mOL<|f(An(m> zwc!SB%78CkQiFDmbKx-T@pwcYiHLFM!KhNHgb^_;7DK!S#1=a_!V5Xsv4a-06id2k z7e_Nrz;BVTFom2N8AOj5CvL>EOby#POnvi{Ef&;TXC_?LQ)nR z0g18Qe$?pyxb@8+s8!1~kA)t<<-luG0Dm;<$^4j*)6jSChYN{D0)(Up{$aoVP!-fZT_{^0`ecrl;YSGR2H>Xxtk4i9x1lQzM>gL`u-!koQT_6cfFp)i~ zaeLp z=dYaHw#>H_5IrkvukfLXi9a8$-?n9it$6SHX83HVtXbm1Ex+UdM57_%#fI!|vWHrQ zB!=`%a(}3@}w&}@8n3Dnm_6rft}rMj@dfCz3sccA0~>Q zMzxmC$jyA#Ep!b}D?8dV8{BJruVP8s(}p>XH)@M^$JyhSP$MO^#}3mU-dMdhp$Nmo z($?1Ki;v2y>RMXEeWxF5i~j!e-Akbp+vd48Jdd$0ypTFR`R0xWr>I=#nzgB_vn{qx zWGQ;k!Op1IvC-WA(?jqo+4;OdUk?kj4+nnfT^4lk!Z45UWw@@**E>3AuJ2UV8s-{N zv@~jT=e{SOPjB6-xD*(5ZH2dM@qymYy5lDHwLh_3ZB}j4Pf1L!SQNfpp02%Kuy{;8 zBHUL!siAT5w?96RqAyLo@iFzng$eD=cOl(*(avr69ZX;L-TS87K{L-?1nDI+?|kF5 l(w#4+Y=a)|?ff7hM4(zJjE;{RdD;Jy(Cad^dy;d@{sGbpb@c!M diff --git a/OsmAnd/res/drawable-hdpi/map_overflow_menu_white.png b/OsmAnd/res/drawable-hdpi/map_overflow_menu_white.png deleted file mode 100644 index 275193e115e54e87dc942c3d25b92dc7a2e2c111..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1385 zcmbVMeN5bB81I7U!bj$GMn1Bo_GWNGukBs$qaEku+Pm$R9h?Ungcw7weUIzl+M_MI z1N?~SGEG<<1}DzUz_x&7QxhX|vdw`yKL!~Pa5xr6mPJTFLLx%qvWPw4&_Brjuu1#A z&-*^V=lMNfecM;KJ3S>U1%jY-&mPvVuiNAA#)tLq9jLWcUotgUnN}aC{Ze-~gx;B?mHh z@d^Tqf&(eFcyVup0U>cuy#k8s3rqO=DxMOMUC+V!FqLE{vS6Y%PT z=-w0|Nc&m$sxMt~AR$eQ&=?ktMvYOkQC2E3f}$u4H(@3ds%xNXouqLwR8kEI3oKB1 zMT}^oEWvS$TtKeX9Ei?zC4_Lq>s>P}sjG?7Q-;O32u2ujEF6xckO1qsd$6OpqRxgcQbfHdTs156wP7G>9@c^AH%37eXu*yPHZo{O zDU!6IBte-`yD1Pvfr+3vAs|=)!6)pjhiBLVv(svEyG^8-AY3+zEpRbTdjV;)yPSlH zO<+Bes&Ntz623*<_bS%)KrGEDfYW59M3$=)UEmAJnyiN82+T0>GhU7trMSE!UZa(e zS)hoAfZ$f-Fua^(T3m+!Ww)7w7BYaE1Gohx$$$yvD1kt6ix~)Z%489E0$Ifi|2KJ< zP6~^6%6~d1aiq6ne7iOWy0A7$K+?xY(dQ&Zd88YHHZ*zIf|A(y@9z)hvM+4;VUEFa zbHUxQee{0z@!L+T|MRO^T{lAqm}aj3-Ag+>nZpa0Ye%({hU;f0 zYvfl>d^K_X<%zEO%W6Y&_YHF7AmKglWM1oN&)5zp@4vS#wfk;c+QC1m;bWaULE72H z`EqW$r|)#>)S{!jsH?r@ubOM4Pvl)mDIXjVLLUxWGr~{i*PXaE*X20ed==iXA9?EN z*^>_eUsBE&r48;o(;L$*7skIHn(Eu~*7KXI8%sM5J(}0}YQ&qIlB#?5_eYg zkI;Q|=(CZJ`X0M57Tas+H;<>C{_RpQZC2I&yxH?(=t$FnQ=2no;ptC0TiV}&CT9lD z_%^+soU)L9_?~kn^Y1Q(S(=;3CeMC@5oa7&`@;jB9sL6kNw=6BkjfFKR=JFkp0wI(fAJnzWFZz diff --git a/OsmAnd/res/drawable-hdpi/map_search_dark.png b/OsmAnd/res/drawable-hdpi/map_search_dark.png deleted file mode 100644 index 6d13bd3992ab33fa4aa0cf4f651a9e7e926380f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1561 zcmbVMeM}Q)96m8Zg|TQNek;c*T7~O<^!jlJg|$7HML{f8in5Hh_W~7r*WDd$VR6b7 zopDCkhLRbHj`^)@=u9TlpbLxOHk^vv&>5#_roxx@^IngSof->4P`qscYgfkE;a3%{d~ZOFjmj`Z&T`5HLa7{di2yQlf*Zg#pQ{Ym zfs3nps|%z<(CC2I;gp@Zix`jK)40Mmnvl=0pdlzdGvs%9Du4{TL7A5~A%A?;j=)~d zgcRy>@m#+ZlzSIci=d!7&*7=A@X#ERnE|JV7=^$GWEULrt>PsnWI~2`8D$>c#t?YO zM6NI)!=jwI`LIsgPNdLBZy@fLDMvblNd>&iUlfF@vU)s|Z}OAUXtLRip~?%LQ4G$^}1cwGL$+Ru_7CP6$f#!f6`5 zH48*<0C3r&;Dd+a%y?giPiv`7+QV-8prP=?YwEyE(7Zm~eNj!WfzpzXfw{K&EnU*&>jmvA zGWXr>J{9aPA=(Ffs(#UCNcZV>X@hp=*0g5@My+MaZdv91c-x)c=|5ysqYUrWOdB^U zrekwLO}_e3a}yAYV;W;_+uzpgpTnHdHAY*0e1==U(bnRS!(|{@z}$L_}vSaX`-JTh^32q^D?^X@3lH=?>l=v*3MbCTmEv?b~{g8-cYx_ z0dpMQZCy6AwQ*tWX?14iQq`E=ij>hQ7u&?ihfgI;?c3GIS!?UQw7lQi)_FS3R+{tZ zNDcp^o+ma=X#zV+c3xinQPk628v<{Rn$hyky}lwE*cdO;yZdH5?i}p++O)SnJNeqg zK1y3n?Pxf6^g;DEH;a=W^&bi)Cq|!8FVc4GIhp<0`P-i-3en`?qzB7)9&oJxuKQr} z0XeQ{+hBZ>rV_D@`8#L9_LacCWN_)9WtQUksa@b%Z{2wN#OqP7K!vv&mfvct+7$j- N+p_Z57E8&y{{VODH+%p9 diff --git a/OsmAnd/res/drawable-hdpi/map_search_night.png b/OsmAnd/res/drawable-hdpi/map_search_night.png deleted file mode 100644 index 3a11b7f50a231914f06baa2d47d91aa86687285e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1571 zcmbVMdrT8|9B%{+BchB=4XEraQ`_kE9(~Ze(IK|gRxLs;*tsp?diTRtXs^4w+JfMt zF=WO^RA8$lC{s~~b3V4{d`xi?Wy&-<%y3iD;RDo84HI=iw<}P$Ka79ulDpsQ`}ur7 zzwhH#=H|>uOh`?TNF<47lff#E??&GEq2l+3Boq>d6v1d0=CVbCpW=Wdn_(RQGP|h- zzzQg)^phV!rbH66$Yrw&cFSy%X59)ZVxtJSy&_s7$;=9PDY_U4kOM4md34eTM~+J& z7o(HTQ(I7rR}Y*nQyB;5mgU&!vSONGq*?DnnE_HHa07vY0`3wIPX=_-eqK_XN460u z)Ndjb>!bss?3P?e&vF1#D>N{TVHlJ_C@{5FiL0kTIEtwelt3^PMlljYNgRa+AF1e# zV~R+tVfvsiaix~HlTYz8$K_DoO;5aN=zq-XMG$k=A$S*3KnDcdPfmMQ4KkVbBRfzN(?ORa|4fHHt3|{iGp!4q)N>&4u?hq z;~I?$CQuat69j|98h`;c?NEUt2NUIaC0>JOsPvdhrNvbkX4Fj6tMu6hRI5kT(=#xm zHi|WSc!BcJAnMx{@jZZ5z7|XBIY0?4XJgrtXcgo-S%Kx9tQXSj`?C(o=D9o!>*wW> zG!5L^065noz)a^@H`E_z()B70>I}draV?yoVNh75Q2|&>U^EQ07z%JDqgLUxbP&({ z-}oV-C?rxW|0$m6mROOI>C09S7cZL$c*G9k#8zorp6ZZDhUm?PY+K;h`=PUw4S8cv zKWIs>v}$T|?RNRFF?}&~=e~y~dEOT0R?U6cqBNi!bMwtA8NRe>@5Ppq%VsO1tjg$I zeAj>Pm+r%z*ND!%o?UaEpCg{MmfyM3@vN>RWriyC(u)lZ&ZVszf-maoZClS3qRzIu z;i)UxZjWjn6k*>=(wJQXMyZte+>cD6RJe>8Q+ z!M)|AX@{fry}11AF=H>Bir*#6x^_a+wLLuMtl^4p=H)|aPqWvasV&>c%^DGITCABk zp#_fNSy=@0Ok;dz@eZ}iA@hG$E9Zl``x{&r!wyW`l*dt3T8XnWk7`@R`3 dZwXc;pb}#7vMaYNm-La}w%M3t_TQn diff --git a/OsmAnd/res/drawable-hdpi/map_small_group.png b/OsmAnd/res/drawable-hdpi/map_small_group.png deleted file mode 100644 index 1ca12287f98913b616c4d25429ca91fcccf228e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1117 zcmbVLO=uHA6kaVYt+Wt-!0Kt;s#SEe|4DXj3~e^ipot+3ww~(j?xb1T-C1|1OKY+%AO>{ZnRNrLo@83Q8rg@(97DHU@Jy0fO=>bKN-|Z9J&ogP zwOX_$MUg+v3971cyvT_nOFYvwZc=mtWm@>k(!1ZRdNo*(-eE t&a5oGyjQUL80x_AkF)zuUB(*7FP6kkwAn^cp z`nh)C0i4j+{RJq8pp=N{ZC09H4XjV{8@U9=81V;HHUyPdM1q{J6DTkb+Qonk`F-va z1QrDw@;v3jT|qnO5bOJ8(A3}P_4Rl97y+qx7A}vlsscYyI5^_(3WV5*4cXMos{4c( zL*Pw_(rH7soN9KtVY?&)m@-;WA7RE}D`O-qxS1l#U=k;+7*1ih1;q&#r&*GKw;x2c zCJSw>$5Fd&OFh|;4n+yF7#0qPjbW2flG`zYVHgZ2F_J`81RClKC|m>$gi4Yc93bSA z#h@Ze0XU(Nt?8dL67zbr1s2U4S5=0HnSSS-+>#!1zYMQVz z_9WLC2q|2^2a>i$)%G^m{7^1ymjS0pvR9J2l3n2LkQ6D@Aq8Q(JyCTUE_HD}F^~`* zN)&1OXULe%Uk{{m8G%N1n1x^tH$q+oMMoXh+lSx2%oF-6`0wfL0G)M3PvdtI% zZw4{dDJ;=0|7oA3NbSkQc4rvW!_GK?fI366IxMES*f9vw%sCxZ-pEbx!E;e0h89O^6Tovs2^g)Fd)Ewm(}=;q6FfLuNlcHU7vfG1D6>HjhMgKQG44pBX;< zdHOZ_C{sVW;JKkYduQtIB+~Jh{Tb+uy7+Q$44M%RnU@%pm#jG^Z0UNUEF@5=Nqu=^TUcVhUexOo5M z!EdULEdHH4J7hEz#D1J45q;Y1Kv)y6nE9bR`-zeR=-BeR*P+$-B83lfqIueTUijnV zPfv_ge_eFpgF8irI_RE_-)GK@HpQba4zYZOVW9XtzCLn&;A-=l73$86XKPz7XMv5O zmr|KE=*+K|(~sgeOIBX37`l;f%7ONc=&-cak1D^@&o9x-vEk1K>BpmgYPt(7)akcV fj@ZAdf;6d+`BXgb65;(L@xyf1G&(L+x4!ZZZD`zN98ak&wyexew9YvVSz#TR%gZIXOV(R=y|n8&bC%nUwFB2Z$@5$G2B1|8I$?JQKs(85D|QGFLfWv!jn92 z|KIQbo)bfvy&dgOw-W@>ksegDcti7lhjuio+Or&JF7)=m8y(JeI<0v3?G-lcf>W_;{6luZ) zbx_n;%}t?#IXLB^{ZpBoF*R<;km}t{_LLM%V4(nzC2PX=l~RJL@+x>89y1hK6$!=@ zRL!ViZHP=c9wNnvL>nw8kTE&JiBe3CJx}s@&#-ZZXK7Ye#HhmZWc{JAHV@{NtU6HF zg?9<65CpEmFvVgqQjA6%Z;at&S!P(C;dvTM(0o1gXX2!Q3Dq$sEo292H9_H<2sEK0h!E{c)A!xPBon30z+^7LV}*f|OLH1~zT`0k93!&~0Mfb*%hQ ztdjB&2plixI1`O37%Dh{;};y4Or@$>C%X@tHgt;q&M-|iuT|ukuOK+!ITl%svtq7e zL!N{2cq|WS5I00x27*olL*VI{AhI$CIVk6Os*Z;b#IIJT_yqgmHq23Ui3gk!7ilO* z0nKp;hg24MIuCfvBmooyF^a(^GGXaFP)dy>T%X}`tugRst+kMi`^m$NGuQd!Uj)(A znpTs!($A|OTy8(U=do#VYW{E~)s^gg=lz*(s*mbBvoDzKI(`55pOz~>e6z$3R^AX3 zD;s<7ZuorH&GWC0?7Hfo-FIhX+j~UYY&a&jRYpJg{{Fvb-lZ>{`s{S~n=8bD!rsG+ zkB@%!_i|sW0iOA?<%=E6Yqt;F{nH_DxR-zJJSXmWZtKPCEeiupZ+(1w(|23SGe?hg z{G)w1tL=W`$g{`Nw>Ei)qAQD9^Fqs2`1Ws`?>$8x+Ud0|m*>V$J#u08`qi8ylh*(NoMkR4~m;nlw#Zom`OSVa3aQO9=tiu{jq`p#p;T{JFQNmtl6# zImHqw<%e|(yKxxl#2c>f($fOd+U@KpQl!!7rvryJ z1iBiL%P4fCl)Am`d3dWG7SrT6VU>tD>2a zGXP{%*$~BytQkPg8b*Ig%nYcCnQCEkUPz#4p_Xrl`fg&)Y<5SiZUhJt927C0X-&as z6%!m*vCkStv+HbZ!trce506D{+Q`~Ofis8fY=B+1S!dnZCWa(btfZW>cqIuGUMb6v z<_}a}lU15Il%OP6xJ|tMzx5MnP(m~;{|ry-icVy7+@b;%w#bA$%AkN!<;`UJ6Q!A* zGy98;kKaDL?qH5|nPY>`?*Et^n7;mg<;LUZUw?mz#r9=89$k%{cyN2It-APd(*JcU zTt7Ire0S~UDzmF?&)#0bMETNkswzk6`y Rz?tEQ*SXAy`E=myr9bu@Tao|( diff --git a/OsmAnd/res/drawable-hdpi/map_zoom_out_night.png b/OsmAnd/res/drawable-hdpi/map_zoom_out_night.png deleted file mode 100644 index 2528efec53a72d6fcd3d543d01c163ddb3fe8ff3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1068 zcmbVLOK8+U7!Fva6!+vw@eorF6-+Y8CYy&{%Qo4z3*EJB7rMvJCX;SxlZnZ+o36Kl zhk|EY1@E4O-ozd}33^jdLGfVmQcw^<4}yY|eN+#n2M3awf9CuC_rJYRo6U_~7-JYF zSDCZxbibT^qi5*l>n}wI)d)z%@=5rVNPxMjV5VU z=S>F(0?aT%8bp-MFq2bh1f5kx*cMvx!y@-}|0&1%ZjoD3tDqWLsO`^nW3*+P=IlC4)wg(}rMXv8uv%0`qI7X~06nF%{OqGT9` z2xL)~d5YkZ&5*#950mks1{)<#>_^1MA)9H0Exb;O9QCvxLJ(D}M~cH_kSLlmF@=#R z2|x^jEUq3pA$9cEjbqVCV>3cx9VK`@c4$4k@gbS!?qow5ka}a@h<#cVxMpK#JwPF; z*hP-M2(Is%ve$A@%Y(clX^1x@MdNi~0N#^y-Sv>0*8mvmIgYPMc3CL{rK~BIB$XAz z0?LeKm2{~*t*N#?a#V$3{_g~)b<(Nxn zM@n}Npa0(Zc>mYWS$lN*-OE>VHQ~vv53euooF3^f^7zM8HG5e-9A9Q>iz_O9(+8_pBkJMR(>$#I5rvp-+&Dzsl|Ke&Uz zAdy4|f1-nn2}TnW7iNuv4mvP6Xq-$)j1Epl+!#pk>;0euVX#U2z3QtRX`DF=ECec7$Jzr zyj?1za$!t1pcB#P_f+<_3QN;inPrXH6;|-f~SD0om=$5 zN9rG9g7dK}<-AVKRnwhD|atmS!bch|6q@Y&{f?=9`vWRI{yESW8h=gglvHYPDLl z7LP)|!f=u#F>H*9#b|6n2MaFJ>a-gSwLPdHFnrrXHgw6*qo%_-l%jB^%@Q21P}p_s z2CYWnmN9kBW4I{GI8Ins!#Y4k@HdS;t%K5n2bdxV;GA#Zd00bjFz(&{fkH!^jeN(UN4wXc2HgFmxVRy4m)#7hV`u zg?OCjl3bSOxD206a!N9;C>)kDcr0yf-VKoE8lWB9#<5#ic3-Tl_&`I@FF`od-hzoL zL@=mAk5rV#)X7s*wrj##a5@}QvuYLi_B=4NK6J=NpJjWG9Drr%aVu%iamx^CLFeOi z(hv+<)CI!;tN;=guAzxH|F?e(PKpVa<)7tgU*U}m#a$|3WtU9A#SHQ>Rn9(m{1ek` zKCh0J>RB`)3HHsc7Cgz-(DTt?!DGE$Uc4Fk-Kqn9FOog-{^082?BvJl8ERwsNAAVV!QKPR=9T-)YfI{8 k|E-6=FDIX^_eY4%0pfGN_^Eq`cpEZ3pBY!zE?iyy18`Deg#Z8m diff --git a/OsmAnd/res/drawable-mdpi/map_directions.png b/OsmAnd/res/drawable-mdpi/map_directions.png deleted file mode 100644 index 4dd4a94c35fabde2cd5a34b54ce7b77b7a7fb87c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1210 zcmbVMU1%Id9AB`lHd?8aLaRP3TPU@4KW}dLcD+kYZ}043FO8R@Nd=4hF`HYG-C1`h zxl1IKqy#(*6|EKpsaRkJFirQ4zub0TWEq))`K)#J?<{nwL<6J-PMGmeSA*8x&WJ0>& z83V8c4SV#JuV9*@9vE@U{kXq)K(mm?88L>dc>!TlRC;eMFswm{X%h~(eulX-JIBzj zoniWtMWGmEVa44)7Q)`K?y@yDXsI@{x06oSG@`(R*r03PkRNHa4Aa!Bk$rs3GjtPz z2Q$oyQ~kvrI*UR`Cpnq51QF1R%85x?QI)4@iO9T=;w6C-ELRaJRG;w6bC2sRq^u~B3FXh&Ov4kIgc1MDK7jx`!4 z8pauhc)AjT7Zi)Div6gSD3UV1W(2&*3B2dUaW&BqF2R4@SQ8zUM+3;0V1$N4i`2u} z(I%7J-QQ3QB;IHTLzfiA7}Ak7>_HzF^bA98INP-~khE>nlx0?uWx%QeP+3*AC02$a zOj;&@j%l~`ti_jgMal^PD7jo#6muY@E4og^eF+KVWl?Bz3x0$R--2!1F0tL>Chp7C zvLQ4u3d;x$wY#9Ff-s6ID4?_1X4UCkeXeh#YV=fGrj@957`h|S&WFgOn|apUHGEKI zDWw>S$SMY~S;Yhnn{pD6m4Ridz;RM3kYZYV`~T*TCr-74r^<=U;qcg2oL@sX*&FFjG|Tb`Tze*VWdX3rn1%)j*0-3{h} zkIed~`mOQWf_~-Ajq{%@ZN9j3`KovByAQ?|4&NR+{pXdL-~F?v z7ki&wJbv>`{l(d7?T4vf$F+$Q<=dSjXI}X0?Tuj9<>>l5pLhP;IGg|YP)gc8v;M@R z&s@Abcr|&rG1GNz-Q=q`j=ul(eDLtX-8-G*z3Fw^sQPD9%pY5C9E<-Zg F{{WQ}prrr+ diff --git a/OsmAnd/res/drawable-mdpi/map_down.png b/OsmAnd/res/drawable-mdpi/map_down.png deleted file mode 100644 index e6007468ddff62cacb353671eb0dc83cffac5106..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1195 zcmaJ>TWB0r7@l>pmd27u+oakM4inH?JagNb*_|QNu-Vyd2D)k3E@a>I%$&2yn9RkQ zNq07gq^)ADTB`I(`sPaw*iu13iZ>`oUVIP)@x@X^=tC)aD^jdycC)b$p#w8#&YA!F z{_nrd2lI0$_V0UXAHy*Fty!}{*TdPpcMpBu=@<{`@?uhLC8vXS(m@en$~dqIuspO# z8U*3)TbpExVe;>~%~sN?pVXbe<4|V9rCvzU3^O&IhR9ha39!kc>l^HYTR*VC#Rj{e z)P;IjAxrM;T0~B-%{861Wkni>Xg7E2?D9N;>UVwusvR#zGufg3wkEWvcdL6 zwd(Vr5<~@VWt`u}Z0^1i$y+ydKH_Y0$FS;|> zr6dV;p6_%zT&KVV(IPKun#KzfFG-MEz_{xtD20AJIbbkJ>_l#uxPcEcMq~%8iNR8( z{SdscUf&`1$uqs3Ev=buo^kE9_`5inC9;3 zjxs~4Mn4s~v?yrB44hSu_=#m2Ed9b^7wfWuv2Cj=lvGuQnjmXX)35|pA`->1Wzx3s zfM-{{SeU5^m0GoAilSJR%ZgH|%C$mGDiqCHxir99ew-lRAp_rT=DUxrJ{7B1B7%}2 zY6ii|pbO@gf+UESf)G?Hy{dzw3$BlYPW);*P_4!y*%sgE*jb*E|rRH z1X0ORpoU}{B1e{BQC0*^#3I((61$DZPvo!Pr}Tuz5f0?&wkjdfDJc+Z1q4Nr(3EP5 z1lvfWOe!KpRAhN7kz-M?>~*ckq7{r49x z4Cii6jdr`&u1+@LX8GWr+qc$Rhu*xbe|lAKo;pAcvbG`G*uZ=&?FJ!+Dt2$?1pLyfle_6|a A@&Et; diff --git a/OsmAnd/res/drawable-mdpi/map_drawer.png b/OsmAnd/res/drawable-mdpi/map_drawer.png deleted file mode 100644 index 80409f36766d38aeb6e9a2745a1cdca4a93a8535..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1062 zcmaJ=&ui2`6i!(XsT2e+)r%p$C^-3@>`rJ}wwqnM;?}xdaF095%yz>znV3x7Z7+g) z5h{rPgf|a@9uyIe9{d9o4}##;g9nQsb+X;m9!dkr{K$LX``-87d%V7OeQx&BtRM(; z%~h|>*ZKTCdxn3%jof{{Tx9hw+n{|mLMaidnEFI)Mrf0?3Bo&fKaxd3C_M^0UDj>g zbOIX5D7TTvQNq0iVR3n!pkPRt=#$MbcBP+h-%DbMUFnY1Qd>!l48qmjlx*y-b%Nbt z0I{^ZBrc8}4iFKB#BsD0XU^D_Cb$mY=huoPPE6R)l@3XDTkB$trbM)48w9Fmie)Hk zmR*MBYogB2ids>06{yg$3`f<)=_B!IDegOMuQ83qPp&jzEO8WNG#bexL#FAbqCp51 zRabN!a0`&_#0-r=oGlax9?60u0~L5!vyO1FwGSRYVEvjI)ST5VEw@yeYr z#&ncj&C7I{wMWwM9>I;2M&d+gCp>{eSw)0k7y#8YAh7yo0FaM#p!v4NHRvO#Rivpu zKBnJcpYj`?M^eynkPZXGHZVXH+W?wIxTJkV0J2D+L5{AMHA&$VmArM1wNi1#`!nAj z4F*3PjTVXdJf(bap3VO)@u90Uy=rIt#s70~uv`M#h0>FmPoP)z51zmLyvKgee1E$4 s@bk8*q%+S#2#Z$ zSSJ!9JbDNm+C!yEz3{jdRh76^YNb#K@lcgJ;?(AbdY~1D_D~eYo87=6;!sQW%s=yg z|Ns3juTD*z+24D#m*cqo<#Dsh)`8^R)5E?Wz1l=<`H+_Cbec416NQ+|JH*1E?4em) z#mHH@@DvYoT-QanR;TsKS;Hoth!Pz!_5z0HxZ#mFK=wSQz{0bxpW|Qtyv769$?-F4 zMXm%zJm-!thj@BXj)_Bq0W>m=SClra@L0p_<9+*&(1XS&}tLkp)>d)RZABp#AX7Tj(^5syWv7#iSfR zM`>V4QnT3_&84$IvucPN}LUKuv>!DyN}f>2^lYG7fIYimuxZ z>e$%{4^s*(pG{E6 zM&;8py*JsI-7A~*UJnmBQ!~Zr|Xey+`)O=;Sy3kH6pLaQ#EOAFkc0 z_kU|Fd~v?pDg&|0Iy@*|yK(>bC=UnLUQZtR<;#2Be-@hu$2SffU%&jdYNxpCmsbA$ z;PCpb+hO1JKJJgt>U}?5s|cC(>iBn~@UMNVQt9l_v;2!=qdy#Y*fW*c^X%^F#;?}O wp@H4I{_go0PJ({UDpjX99?X7nl>-krcjMe||GfC>Qu22wmnO^~3+J!C0o0dn$^ZZW diff --git a/OsmAnd/res/drawable-mdpi/map_layer_dark.png b/OsmAnd/res/drawable-mdpi/map_layer_dark.png deleted file mode 100644 index 27ff0e31ea8ed3e1d6f2221e201c2f040c8807f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1478 zcmbVMeNYr-7(ciuWP}1MB^g>4Omy7a-TT_x)e|`m;LyVQ+VjTaVqnb{FnY zNs-c;%o;wT$jEVOOdE@TN*Vt^Ml!z;Y$P2V@}xm)v?RqzF`M24&iaG#k9KDFeV_Mz ze$VrJzV>a`+82|Po=ehbG|7%)yBn+vqHp5k;2Q~9?}8;=E%c}*l1~lMGN;LBB`*g# z1iG4Yb2MB3+DUGOMx(9cOFgQ``4YuQf{u>r=)yt}pf#EmdEp?<1UMD)a@D+Og>N3| zfgzr?!sR9><_s2ae!h64%$00hTgq$2n^W*!)L zlUX0-winI#0+JQ>t7?!!(NHL)3mJ5hT#e!+Nurn@)$0+UfhhH&N{10q$&OjDa|$E# zL6w(8C~A@RO0}vL227_z5Q0wUL&KsnlPHifG)xCkT!*285RGd}TT$KIzcgmmR!ZxG z9O~v2sa9q{J$%_QFv#7b9YqxZ8)}`*gQCzic8RGKI8k-jtuVOJu{=xZeO`w1`e=l~ z2@WA~BY{{j5<`5r#lreH)<9rb%+73hQ$Arc6d8WX%3tWCll@z}egbE6#st)Cr^CBySlqJzJ zO-F6#WWJ7Li)2ZFrt(bjvv9B&ai5U|0pm15AZFT#BQ)kUA(-Aocu5x5dvP;7gJ=J5 z{!l;)jW)}FnkRMyIx@O_I0`^`I82-fCP)UOQghpH(P-kXI_&wS;omV zZ^zyx@`>Yi+azw{UFRckYGUfBdvI{r^KN4VUjK29zwwux!(;cgr}p>3S;e^(6+5?2 z+_8=~{1Lu4!ISEhCi(Y2cPlro*M6!lFB|%C;7Zq>`nmos+j^@OAAB-nyyvf_zx8!j zp1qZlGrlM{K5xknSMT?yrfV1O_}soLGd|RIf_|!Q-bFY3bIOe^gO<96jD~n&?43`j zJ~nq^sLor_wAhvK=^j2S*fPAd!5P33n)l4LK`E7$W%~;wY1dx(BKaI~(vz2VCart3 zDVWgNJwl2PI_~l<-SamDCfXJl4yNtaqMj#eM?_d{HFPdc5>iJFTn9JvFF$i3bNR87 ztXI0`>^f=*Yj;FGyuG~Y`JHn6rsl^6nl_B>CG%T*kFR>O(Hm*&^MC2e9?pIC*P8aK z=I@%tiwWtGI1%e-(zB8Taf5zhKkUdjT(Ri=ONWxS_h#pA-E?-Ot1EMKUw@IaapmX{ zZ(Ym4#a9^@@0d@7uTRWD;6Pxa_t1pf9#(PE&jGbxcPnR%%-+FNW gz1J_#+dK!;6n)g%c-mj#PnPRIHZt82`Ti~3Uk?B!Ylp0*+7m{3+ootz+WN)WnQ(*-(AUCxn zQK2F?C$HG5!d3}vt`(3C64qBz04piUwpD^SD#ABF!8yMuRl!uxOgGuU&_u!9QqR!T z%-qskN5Kfl*Eg`xH!{#Qu(UEYwlXkMfC43;ZAB?*RzWUqP`iLUTcwPWk^(Dz{qpj1 zy>er{{GxPyLrY6beFGzXBO_g)3fZE`@j@x4_pIZg5^PG@yV%reBd*pl_&Wpr4xy@)uZjaY;}r!Wmdq7l%|9r0NHy z7U!21B?IFlO&O*c7&4a6BsFpIWGChrManjC7v#}NqqL;t z)TFdT-DE@aR9#C$6LVb)14{$lG(!uEl(f_oV{-!om^s+=o4XpBy0{paxtg0e8ydQr zIGGwaIvN`}n^>9|Tez9J!1Q|N6_+IDC8xsd&IH;G)oY4Zua$FAYGO%#QAmD%4lES} zWaO9R7iZ)bC^$QVV_iWbJTosPzr0uz6ipCcyQCInmZhe+73JqDfWz4;6N?+n5>1oM zOe~UhP0b8Ubxo5@5`q3VFxRy-F$elQ(J0Z#BuxpbKZV@z(+4_AACy>-5)VuWm?A+; zcvb*%;F&2k5150BfLX;ky>>eT1LGS{7srr_TUVyqdN>7&91mU8?<&>3Vws1^qAG7+ zDG}GzEKMytL`+Orbsd3dF-z{m39RedqW7&mI>$>(plQi1r43S-uKz#q|LE(VSJIze zXqEq7c<<+q=l6=wmuAg+mhr5>a+Xchmwq3$VE^mvWodU7u*R@nC`hz@c1^SnZ^bG93NWr*7Y!cnd*OS^#m>FrEBMTUNzpq zUipFXl$p%*m9v-UUNx3rF`U5cD8O196MF4X;k5r%E2Wp@_UzMQ>Ji#m!@9Hj!Niw+ zhF`fKE%*6n8@Sye`lDfz=mQC!=E?w*6yb#n-)wXWIi=JVDxRrr=eN)A&Z?UWb3H_L z8e}i9&O0b}WAQ1Y8w_*L6!kiq6t7;v!SMXu$BYX9nIPTW?R0>T#T-rVO4mmWk%?kPm2^iIAt~pF+C8KX^@`h zDV@REJw-M^-9dVzZtZL7t@C`sF3Uu)KVDNRY5PDXr#U$JtI3xK4xT)d6PSDouWovN pd5Y@VIk(R}h`0IW%l|?10E5&08G*|CvY&#=S5H?zmvv4FO#u0>6l4GZ diff --git a/OsmAnd/res/drawable-mdpi/map_overflow_menu_white.png b/OsmAnd/res/drawable-mdpi/map_overflow_menu_white.png deleted file mode 100644 index 280a7d376b6d45a34da24def97d28ca8ae3c1648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1141 zcmbVMOK8+U7><^TEff_zSY7ClR@7*Lc*4@ok7fdbN6$^SWkJ)Z$^DvpZX%X>- zASehG(TnyZcoBLM6!g-I2dxJW;z4{=@F1ucDJaxQyIVb!9tuTP5Ar1t}f!G6BS3$uwO-WBZNfG_Du*%t}zPB(6A>@KZkt; z(Goe85j3J7Q7qq08;MRjb_0wih`#|X{&gek_)||sr zAsn6>tXNZHmTZS8t}U;{2h28i8pFH&NaT(+y=eR52bU|9u?spJZ&5q$_0{15^$ zouMq2mq1odv!X0@BpbN?99d_`;G()({F5ny%OD z={leG!%>=*WtnC;n&T*}K}C}uGGfY$x|7+IkcAjkJWV$m@D38a#k=}HK0pzEuK zy{M5WoH9B#0-8-TwCg5uEo(=p4FA$tQ#-0m29Pep$e#!;T#ssZ6O41WzN17Dvr&$Q z4lar@uKCu43q4fQR1)8$ZO2w@iLtXnRib1;$Wj6;^OVGyRSI&fY}lqPLe^^9Sqop# za(q6M;RiT@XW3#_)^f!{UdjnsshDRut%)sp5i&drHhnwTcLU3{)we1E*z z1w%C-`BBXeK%oHk>W1ZbiQJpiXeDF~hRzvi4}`u8mXoYFYY>p7EMFA`lj2QAqy)j_ zC_}bciV=BeOEM?g7E3np_Wvf2#-!+^Q~v3k<`HhkWV<>CSXiAT=;84R@to9qZr#E& zcDtnID)C$M_tH{-3$@|XjYsF(u77Kro1b|zy)Oh^;KS(Bw)dUl!tL*^UB?z)o&4B3 zH-BNV?WR7P`c&g~i+6Um{K)Uk+`p1~yyal~<(aSbgQ=qrQZJ@^AGc0lSX8$@YyDVy zePfq?zvskE``o#qpL@Vl{XuG~=hF5c`PnXU;mh44xp%)d&fPm7cZ&-H)4e%j>nUQk WW%1YNYiD03KY~(mP5|_1L@hxSbMBfCOYc2GFo7 zCO{O3^2okf(1alQ!%BCL-4ofxOSu}#y~>R{Mh2uG=?g& zAKSx5$cPaHNu@1gg58;pZYeV$aWdA@j5eits6Yj_h^Ey+&EnI3Y*jB0W#^c{&{c>% z;K$aS>WOrrLEQu>>-OLhMNz1ib5pFZk!BlEnxt5Q7inh8(3_wJIr4N}B ztVg^yM~1n(xgiG#z2Q4e1r|jd6m)4w1)3ce{207(%Zki1tSrZ39uH1?JPgi}42N@^ zOyeFv0al7JARd!*dN$>USd#RHLX3}QC@SRf(E&QZlC3lo2np;CCdUnHmMv-$$k|pL z+iP6mrd&Q~0@2pZZe1VDbwO8Bw{XyV4#N|7VAE;SI4)s^d7mBZRcI93771n{Jh*4VD?|QsSC;NW5(OaE;9l!Wl_Kz1+ z%j0jB&Sgu2-_(7cDL9fndD1768!;_QP@8v5q zbFV%$QDBrzUOPClcjD7J;(Dg?)TOJ;b3gK~=9fQ79Q(e0;x@Z%>1<)&T+7eJAB^dw z%iBNxZQG6gC13A+>9yMVDZyL*;OO@DU6%vG6`E-klw( o@IIQv#?PI;H~RMr=as*TNF+1eSUtJZ18L>(X=SqlNw z7ZJNa0ElwpI$yi-2S`+7?f(S50G#=?y4LNW07__F# zoqRxOShWRrZY*q?QJx@Tv6wApw`qD8L2(>MkTgNlI7Hw^LN&!Wt{RmY4FWJEU5T2C zrlOWcF{JgGZVY<55<(>E_pd2djnzcKlo4?;N>DbEh(xTomeGb80ROtNF4|~IL;(>1 zhSsM`upXV288Xb>{S8?_=ndbjE3hbHub@eN5ulnr!HvNio2 z0vX$iWqXCo-IvSP>p(O$y-m}4GhNUU)=bR^Yf-eme!1#sRlB0fTFiLLD$`2T0??Iy zAUEh*1YOQEudL?->jbi$cHvHkOyZ1#0l15!BpkRX63}*;WoQXo<;(v!e*|=ju$tvR z&67ET9chVcqX0K+!vs_~K{_0jLm%DRiXd5ge1fMfKDRi0>A7srU^WVX9w z?|aV($=c*=e;~)0l9F@SnU8N?esIw{b$NR_ujtI&6W6+r9z>Owis#=h>=KJRQ@h4a zWLKn)AK#HWdSb^=!QiJp{R>zA;VVU7cP}JH%HHr4RVO#c^S(Ugy}9vrUu8R4IOCe$ zR<)md_e%4r>wizpoqnt(r(&VFdhnrO=&$_#&y>x{3-s@Nc+i>7>DY9hn!Nhc7=1Qy z*wfxR3%>c*d4UeT(@}cYcJ9{G*INI4b%H!O#+C*Op-?x@#z%iHy*qxE7|+GK%a1VZ z)*s4$eSO%I+O{j2SGJf;bSEdDUn-fus$AT6tkEdXI(hw$eI|WmI)5V9yF01f**Nh) zWjZ@|A@}|ClhaGu{#4bFc`%Xs@$&=oJvA?e0$G=oj@z}{hev`pKKTCpy#rs#We?A2 sL%(e4xOhV->)Y)gU8>kO`_={$`EE~h&d8hXRn{-f=WP-`+_`t~AK91D9RL6T diff --git a/OsmAnd/res/drawable-mdpi/map_small_group.png b/OsmAnd/res/drawable-mdpi/map_small_group.png deleted file mode 100644 index 0e35fadf799656c7e3379248edcdfb54d795edeb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1054 zcmbVLJ#5oJ6t+~Upo$J`&;d^FLM8m~i+@zN3UNXsky51*4H5%q`_fpgea5~tZl{6( z(UFA-2_b=mgv7|g0P4oT#0C=+h=m215apaEg`w(zCHwB3-}k+D@4atlY4PIZ#MA`G zag+50x5?HM#e005eXsPceP+vPT5Z#1(xH8nVy+wz4}*GyR&f)fVDrXXJj-!o8)2(W z+l@=MPa+W&K4Kmv49#(~^Lc{&HB5nrSHsxhzrA|RgD`OT71)p)Nd4XZ!Na` ztu@~Y`1v_7o7;>a!W4l#T8}e3clZIX&GyBy#DjqgU32*Tq}q)oP$4M>P%H_)tmwe7 zLlc1;dAD(bAw}H{IGW7PB0_OKD0!sK#9g?|Z z=EU6uwVOyWp%F_fK8RF&5EP|S^r2{>prJ*<3s@+q54tEmh?M#u1uOMTvKxH}eQ;pr zob#XW`|tm(OiqmTZr{Bf0MJ_)mrG=Qz<+!0Am1PBnHyy3$GHkVWLI%raS<5NZ52@k zQ<*{~r0DarpQAJYT@9mL!Ik2Zl4hGx#m7V&rbE~Oq=y@hqD>=Asc6cuGW4}iF4B~t zXXvLBMXu;%QOy`%aM7WKiL$mZt%*84JVd1%5>a3xtWXVe#`2^_hF;ezk-aZwX=)vU zr!(}1Q^ZiBXv3;t9By;yIXNxdh8484gOEAn}lDKQyuC>Q$*E z=i9c(DMQyVb|jXq*Xz-GENZ(`EEGkN<#?9o8G>NEc?&BI#_|R_8f4^YuHj(AwkTht zqS|vfLlaLoLNJ|TaZ|D7wG%~B#x@j(g;9<*O+T)6w1-RRUpKZyd*yitu_ff$bFN0} zQ61=zN$zfM$OjT{qyw%&ilWTOwl-%X3m4=JO>UyPp-Z~J>8W^CV8nPl#l)c)V+3BU zGKhzwqN{oWL9L@_EB+{-&x?7O%OyD;!ki!`6EPt#r=UD4z?7Kna0`})6-z@M+Xk`S z=E}F_N?8{v*mlddJ=5ue$(oIAuVy<`HtSbipdv*@Gb~>?=oe}uZW+18vq;aown?pL zS~9lqf=fW17op0KXay!7i|LHY36S9vh!;>?P@t;QZNC10GsqIBSifEV(>@&$=}CXP zISk~mIZntTGvtzC`Tm8-uK)z@F32P0#&_z?TepV0n83YVF9+V;RRQOs3=;{qBByY( z)g0e@=i0@^8+*e0!|%PaB47Owz*zWlY2R|NDRi$~3$0za@)6L5oqcbHmb>0Tfk?$Y zxBOD}#S?01sae@^;(Rc?@8D-kqiOfxtA~$ve|h9QhbCo9?w;Vx zV&%1mLVql;4xD_wr^EpCzTD@EU#(u2^-FZnsiq(6<9GGk>~0+se*W~Wg}V-i7a!H0 z2dyFMspB8x!SJz5r>_67GI;juzsH&nKJiBHTDo#&HZU6re-LQJCNJFg%)`l$we9*2 z>QA8N=`Wr;x%+YIOmOYDZ+__?JM#7c9`tbF^zpxb$3N{~^8Y}E+=P5~^ytz*ms*(0 diff --git a/OsmAnd/res/drawable-mdpi/map_up.png b/OsmAnd/res/drawable-mdpi/map_up.png deleted file mode 100644 index 013722c6b49062ace2789c83be748208835dc734..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1190 zcmaJ>O>Em#9Cs6KgJp%l#Q3=E;Yny99Dl?gc~-qPjT07Fx{yU$#sPTtdugrKAJ}f= z7Br2j66$v2vKvC$rJ!kINQg<3#(^9FY2va2;!vR>F~JZOHx3o!Icdrc)hyZ1@A?1x z{eS;2uQz928$bBML55+*>nF_?U7t(u$M)0bFFoTQx;!6OJMkI68~0F1m@@V)0_rZB zB`t#R@_XNt35Ln8Iqgo|X`Iq+-z}ijrjWP+MKjFAWD+2Ip2WZ+vyNx5TQ|R9frAb9 ztkMt~L50jYCs#spW@V;rugu#Jvy&&lM50pym&6Dp?t&NTiNOwdb^4wj^DG#c#PbF_ z6xC@oLB$UVPzow%3!)4(SP&IegW9V=qI+H_@shv^P*;k&Ac38WrQSl^)mvt5#~0lh z>|7iNI?wldy+W^8@WWYNgb?zA#7h!KEx2gei&4UP(XkPONg_LRg4pprkTN36UyKcw zDjkO4293rpu@~(mil&TDP{4}?fp^_Bu7PzFx5)o8_Oy=L%K_nAB=Q$So7SUyYy_sc zd$gm}kgCy7hYl?YS}=Wk(IsA7Hw~74DPRZdvVyT?sVXO_s?0$_h8%=g;#49M#kOS9 zweW~%PrO*1t_hXtYRMEuu_~7prBan^#hO&q%v!lL!q&YgMxISZzMa(f5L&_k;x*{%> zv@YUM$yPXsWQ#+#EODBw2vEc#hFyu>!Q+SWH|$e-LgNTVa&$|TkZ6|_4#OhiM3K;x zLPg@bNTN(CA{x?Io=W7?)_JIvMn|+i)7Ra>pqt&%A|9QmkPgo3=4bcm(A}t;<#zJ3 zwf*41WR@HIbz|R^BZpA#;-yR1AOE`Y`|I)g=H}a1fBPbTKMy|1^v^X<9L?Wj#PZf* zd#srM@xa{n9|e|>8E^3%DWE+qT%2Qq)Z0hT_xxV84yciH|^Q`@=AW2cfs z_cC{HH@`hPcHPLovu3@&(E;u8XW@~n8A}7V#`{ZC9~`d#^-}v!wSD`QaCPH}KfXK; w&VN|__r*IOljc`f;PRc-H*@=c$XsBu%;#GB)7jHEucd#EdUeLUHvR7Ee^t|hxc~qF diff --git a/OsmAnd/res/drawable-mdpi/map_zoom_in_night.png b/OsmAnd/res/drawable-mdpi/map_zoom_in_night.png deleted file mode 100644 index 1006512c2b278628e5f8c74ee0b63d30599ef8b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1069 zcmbVL&ui0A9M2pMnd~IU6w#Pn9Gc`MO`0Yw8(q@c!a7G+*!1K}^18+?d0FzdW@CZ~ z3c|d39?C8QK^UGy!HFmF>OnmD2MBr+55j!u+Ua5JU?6!v^7(wfpYN|nGt<|H2G0*N z3^P=%*mb%NXYZ*2`u*BAf6?U}Db15v+$3!nBc|wK2eH)vE}%Ms-rDj9G{!LftA1mi z%-5z27Y72&FhUwcl+7?>6KMq9MMPK!E%>3yeSiIyV|~x$=F}RfMHXuLmGv0Su1`1I z^+i|rxQTIgEH$Ws01?Qh!BUtQsmXQh8g!psiyYg5kVTU_5H(+$VJ#dZRu%HR3nYcr zbU{+{nyy`AWqKAtL6iXxbVJP>f)2Q3!t}l8rxfUUjA&TvGTWIG5950BH zuInO@MOo%4f=|{$0#iOrMtT-(l(?}U5g&(aW)V7gg_s;wdJsYo)oO=^!=#%inldqk zkthj341z4K4mu%q^jF4_=%le0A+e4Uyb`;#9?g*+nda_zM;VZ+F>b^@Eec$+vAYtW zkW_7xqkja?_YAq|xX5Wj-jy`O>yo1J1)u}IDHRG{6L~oefS#SB_*zL;ZL3@=X^JID zC1p|t#bQpj6g{6SlvTUOt%eDKp^JLHed@c*wU6Z*R*WFQaRcL}UKh-?Fu_R+N33Oa zs?J`S^Ft4}lhLe92T|K7_E(Wtj&Z-~R&(G*G?( diff --git a/OsmAnd/res/drawable-mdpi/map_zoom_out_night.png b/OsmAnd/res/drawable-mdpi/map_zoom_out_night.png deleted file mode 100644 index fcae67a6e3fff3de0121966e80bbf9df33086623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1047 zcmbVLJ#W)M7D$vB$IZ5v z-7ed2mh0*i`+v*rUu?TYTYb7t0-B=~b4{NNFla|;6L&H4_nv*i4UU`K4SRjs@2prJ zi9}TDh((kzG{-d-iUfIEn1TV`3}c)B@$rZUp>OjWS_gI#2M@#L{S>e7ulBtCEzk7% zh5MjUSj<3#DFQ{b9cNZy^CPUY+FLsAShQ5QTYtH3ZtSnnpl#Q=ed~IM3QbwvT2$UR3t?a zn1+z;#S|4noXu4hT%37nn9z{KptOhvWQW>3i}W;wDCu<049D5HP^@H9ff7j;p%g`B zUL);{cJbdZ&ehI(dkL1hI3qi$$NCY>RbW=Tiyf7UEE?-!8nULKZI^gE5sqowwR!d; z`k`+r!N9|V012LKV8N7CL#RU&3V~d&`vLZA285NJ^YBJX(OefQEkku=xuq^@u-U9B zj%w<)`jX~W*mj&z6nnVx9Wviztb8HXa#D;aNqdBBS5vSyB$Q-Bk^sjUbsgN@2xFh* z*}bw&r&+r=4R^7>l#&RH>THGQ#GoV1)782sXgbscZJ;8SKQshWHCX0IL5dpiW4!;r z^^;goQaLRD3{Q2%CbB%9QGp3(WWq6HP|B!s{rJsWMl+-BHhaa_!S9okg-K!J`}-@0 zH(o!6@8;{zf6hOO6kQK4e_okUrw$JqPmjyjYZKh18Scfw@)zwWx>HiM-CA`&EIxVp E2eYq4X#fBK diff --git a/OsmAnd/res/drawable-xhdpi/map_dashboard.png b/OsmAnd/res/drawable-xhdpi/map_dashboard.png deleted file mode 100644 index c2bbe0b7b97bb9d8bdf396c4c6e7d4b81118b84f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1222 zcmbVLZD`zN9FI4rV_GSURjVQ)lhJAOdP(k*T`bp2x}JJnxn1pnI+vFxz0f94mgIK1 zicsrBgbn7t4G}jx8Ln)wv0-7z+=os4;0LFJO;I-H)-i-K1x3Y|C)Zx}L)ixd$@BdG z`Tu_Z_qT_Kwsfq0bS;Kq9mPSlj7}zb*W8D`qp9ECLPvL`Rikatjv9IZu)GBgfEQhT z43vRxHFtgvau~L1ms6=m)zb5_30+E0Y^d1v5gNmCeX*~b;~>HfFy?p)v2f-rfjgE$ zj0z>DF%(qvd3&qx$2h#4uD}z_R7CIcW>7(B296&&(8Ci(-GKE- zAyA}?DY$;Av`p-UONBxuqhsBtS&E@uH_5AI9Y$sFZx}0Dhn1!e=rRalJup!}>fkC59*(d28UHrsxwYH0v(#qN1u0=nrK%mdp#5Wf-DJa-ztS62nWRBv~9O0u~6S z!2{c{+B_@bvuUxAPit9rfM;2a&u1lGW3zdVFKC*|W!u=I7e=~gg0^ob@x6#u?~0WR z0nj5DR3MyaPr+~vMlh^FA1@SIUB`Py9nXS|a8uHz#jI5jIJ_m5&2(xjs# zp|a$}D(oK8qq#s(E^gLAd9&9aXs!#e5|*Eb=0-V4pa4Taqe^`!%tf8p94`m=@nZr* z=TwY3CpPa?rKb#asX9RI76uQHlnr&T7Rt^zSjTfH4P}DNA!rgOSG>#x5k%%Q?wWxY6L9r}LkTgNlIMl$yO(8>w;-T>R1cMud1G=mk zvKm6;jDn~(8cqy)Iv;|fc|426q3}YYV9JQ7pb?aXBorkc*PM3P@PU8bSW-LeZ_)ta z17WpM55RiVtWSVp?jCF?t_Z#1N_80)MW}bHfkp*{4BqX;;EhF+CC+A-BvE7-oMsps z&XP73XIY8H89)JhK(v7xQA+SEiDwONmktC&)%~hkpXh?JplYb$psJxR*Id=ntO_|Ksgdx;c$wy-b^~4B z4WuGnRnWOSbMg{CSRD>JN2DY?hk~I4(k9`eLlW_T$j~_s+9pUejDH?4{oni%&?zF` zEdObq#1ZVs_;zs=ps+YhAOt5!hods};%|EqB@y4N2@7c|3I*#>Mw`vX_-KF+(?Q8zJ_xE`2tIRB3{N5k0Ot0v3C>L!W?$_z; zzCW4ey&uKee&=W3AG^9!P9Aa{&U$xJttv0+I;F=>mt1R$ymdZh2HXEch9xy=)q&2o z4&Hs%mDxXWA?<$BcxGzSh`YqyJKNsVd7Vkwn0j&QF&`$zHViy$y0@36##euz)@jXO zcHx*m?WOb`{EqEKV~4IM`>U=#c{#GR>F8Ka`sIT|rFA~*mF6q=ryDz_&+j~X_Xcq{ z?@~|g}wOz=bh@_HCkt0r>3NyIW=&*d-Z75zUC9{=J8KIZ0inoH9URt z_?=)6`T3Ez*PcwPiC+78&~GwzRaZ}y#C~#SXt(*z6Q5;JPj$DBwxk&RaID3A;+^um pteKteN5bB94;V}K#)bVF&)9C_yM?HKd#rimfhgEa_p1?c4Ia1TwlQ^!ZfG=9S#(I03}s=Mu?&akd%z)okTq}ne*K>3 z_uc)a#f8a<4<#Z9lI-3nc;QS&-h>tKTOK>T4^9sn1r^3-)o(P28bBPf>I0}dAXWn} z5aq@l7r=T1iEB~HDvSzG5ih9$lNgaPg##goMv(Qn;gBfR0t5AdY9(mLCi?m@RFUmi zxy3_zLQYVlY;4lN=BDB@si{`tWGr_Bx<1T9f&ef?G#sc4>U`La&GGVZ9XTd2bWX&m zwPW)}Rd`BKr>X(eVq$TLq!`r7nJ5cu<*e&a8tw_wM$jZqa=gXNlQg>UU{IST`+2Y6 zTF?b|cC5xQLOekC zjG|AiH|!X+bl!zP$m3Zg4(bbmf*~WqVu+wjBoPQi{F;;24KMiLjAfRlqn{Gh=hooP)GkoGw>>6zdM^h8UDU zRJQ_kFJS4rVtJ)fb8+UCWo+3M1(Z)Mxs1EtxsNApvT9!wXq_M|!{{~UG{rPyx{ z?cFz=nw`0;bkmu=nNL3VX3u10xYfa)dFK%&v|`&(*Uz0@$NDasjz4gZz?~DHO&m))eK@Bl`J(>Up_b1F9Vs(; zk99wKE#o@QR88hSAwJ!G04;g3*K{Q?TKrGWjl|~mPreF#-|^~^3v0@67hO8B4*B}E z4_oq>*_BrlvUaUHHTXxCk#yX#{cO2koOUZ{P*{7Y#F;#IkVd69OJ5blSaAc(_*L=|4->#+po4= zGUuMpAMg0|zW8%YQp)XZtNY`+Mz#A3f22~5H2?ZWZ^xC^m%o@Y8Av_$cTSr5@*z&| z9NRimd27`Od+OdPp|5cJ?1^vJTuz<7qj*NHJ)D;KHnMcMuRpUp25}9#dNzzazBBSe NbQcs0ALLi<`42`7W&hRVf9|mDEVUbSnKWq^#h5F4#KC+eKrLLu$lJQHi)T4*5?FaQk`5ch!~pVX6Jela@R5C9o+K6g7Ew8JAwDTg0QMrrD{~hZGT}q#>?A_b$5H+ zg`O~XiJ$G6%s_xC;(I|SOw3+E=-V~fIlUGIzOO>p3&J3%MsZ&Oz{BQ}(TkJK>nl(T4#iWAJrZh4|vD@wDx@wNZEm4LL zijpEK3Sb%_*$OG@fiRiMELb>kV?Uxk3Hj6_a>xcP2rSY;3PDt@?i&u1VWC*b#2$)7 zIVXuhkml9bPG}AP593hnq`nnlv4#_}5xcA(&8ZB`YIn4wRFOqvUX6X$6x6YZyAj}! zR;+@+UUHuAnVRl-j$;@=F$@hrNrM1FPXPv&vFzh2r@ux?2R{rii_<3UO6j+;o{b73d z`MuBZ72_@UF_~+9+51|by!j)4KTPS$*3RRVNiLbl1mo$kPyU(X9QW|ixgGB1lhKa< RZ1YX}TCo?c7p3dB{sA3^R)GKj diff --git a/OsmAnd/res/drawable-xhdpi/map_favorite.png b/OsmAnd/res/drawable-xhdpi/map_favorite.png deleted file mode 100644 index e2e02d791e27a2d44f04af2e8b473f777dba4442..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1368 zcmbVMYfKzf6doP|(okun)e0e#!N#^aI}dht9U9bq1w8M=?4 z))kueN5zPRHmxm2Yi)vp4QVuumKsAOk*1}_2gR0>s*Tx3V$dcv24{gqe~|ugl9_wY zz2`gUJFhudU$-SM_pw|60P?&w?gncGlW$Iz^)+I#Icr&OdYVkX8Z^VKE&?t=;RO+E$UmW-ejf}=1>Gejwa;^5K)S>ALZ z$TYaCmwZ{06AGE8#vn*I9JYl^ZK~daU^Go5D30JbY-zwoR595ItQaLJ3vSWibxAWN zRRNP0Sx#*?osh+JF$7uj`IZeU#!{lJlpzsTLogeP$Z|5S1#QD@5dWpIqP7u;Y9i7g z8fv@FTlEN*q`+40?(Zn6Xt80Q)g`MaY@1u<+htKPy>2ID-Pi<4U?>VjO9_I4F^a-q z0<~i>NAnJtatLA&#c7%s*p!`>@YU5MSxMtGNqT4u^AMG;O1zr%P=pJ^3EEYe!g>|M zWEEaa`Iao-OIYf@Sf)xBSyR;ms@j(7g8GnZszylFz^bZ+s)HLFB}Guf#-?PM7Nd5H zy0ljms&!Qc7xK(VD{u&6xE&{OJ4~`H0b`sUhiQ%t!W6;UIgWDBG=)J+c;Wx%53xug z$!7Ua^Q4Zfj!bTsN5K-7he=ed3DT`m*<=6m0{}>ic-^i*WHQnBS#5@^pzDbjABGDK zxmK<1%ui&>@$Dx^!fzC;yXV-{mifn;j;uo8VH>x`UAUqA!^4S~t?1%F;oZ96*=vce z?jNV7PWHTg^w@j(``;Ox2yPqgU8SuZ%Kmd#Zb1=w6COOhGiT$gg?)!w=(8#_xX+T&4uYuQJlSfWB-720;$_q|G=*9@$&=HaC#>miiWOp zF#lx5k?ip5@eSdd7mB^tHbSb)|EFsi5Yv=_U_UO{-sO# z>bswCSEkT&Gyai_kIt7whQ2;pQ{nvm`O#n3ANwX+Uh~yK@+akv7S5i|eT(C2JCNON zTl~#eJGwmA`rkh=h&`wG_RJ8cr*jhVt+S_II7@43ldpXKciH^rOY=u=r60f3ye|zX XHqI1h_`AMH{_DJ+I`>DFyW{@=v3cT5 diff --git a/OsmAnd/res/drawable-xhdpi/map_layer_dark.png b/OsmAnd/res/drawable-xhdpi/map_layer_dark.png deleted file mode 100644 index 2b89f03e66ce5813080603799bc976645031b780..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2105 zcmbVNYg7|w8V-bNKx9K;2?&-U!AsCdCLwo%KnMt~++qZ@T1YYzNF|rf1QJk|i>RPP z5f%~gc2q>v3a)t20|=|^S*+DcQK+bh6smM(X}Z-STi6{C-2LI{kDYU7zVH3M=Xvk% znUeU}wTqpWI1vbh#nDkRIle+OFKGe(O|pNx2VcBQ5y_?v293$AL=i$5Y)~OUv`(3Z z$Pp!+{rPP~LLd;cw2EX?a?EQZ*GA=_$cCI)g*s=OS_IQV)<V7+0V}OiI9_%g|$DOE7I#uNdFY z9J6S^EX1@enD)-80wIx@7bu1} zz}!Q_t)Z|+ESE*j*}|n@TDr+(6th@nvzciQWE#*k7F#3|u^o9*Op$FwSaJk2WTI-k9vb>Q8PDBs8=3*)-iYH+EnXC5hRmSO)FFCPv@Dp0 z-!NeqfdUAc*YhEMpp*+mO2gSQzBGc( zj^IkAQb@!PTL=V)P0_M2g{A-1=50}mFwe}S%L|tzZg$;OTUb*5dTr@In5W`?z;1W??>G_YR$DX$J#TW;T z4S`tu_|c%iX96r~&*L!{?|Xms;(v9gI6uCMboJ&4x=EY2q+x5KS4MieXSpl6^Fn@~ ztkVDc_Ty5HO`7VSkX}WuvvxjI?IXV+lbbgdW2BPpZt|t)$Z4cvZ$}16Q5;y*3AzqF z06x_P+D;Y;dBs#`S6hCOr{hXT_U8uaI+KIX!Z*p))8NXj!=^23I|$SaN+Z2fS~N~W z>uG|q2ua6vs*~T=pSA0roPf?dz0IK8zNXkdGjtN8VMeG2Iqh`5a5CyL=U}bf>rl7G zCC0{S){pKJ?heo6nru~hK`&32tm!Fqg%+J7eo7EgY+=21_SK=1iYE(0it`2oZA}N) z)$A-U^O?Lvr|Rrf(+};z(BlvOcDK3Q(BgoJ)y;WEQQi7;MmXI7ar`X=-IKZ%DUQc3 zcQ9^z0Y<*iy7}#D{UuUT$bbBjp6FQrcG#3)UQD9YiQu4ukLz^{jQj8L(@FKu+Y%h> ztcm?c{jR>gZ>C)L>^HvLQH@>SqMq>BTM)fKHctFxDk`fd%EBOP%N7NQC{vmg`mbLS zE!R%`i+p+F4KY`a`Kx~k8e9%N+Q;b5+L?RB{iocfV^Jwni6^>bDYou(H!||gjq*ir zj+Fm6l)R!pv3kOKN>>%qx+B(ay{~dLRS1(0wA(j$E`4xrS$WUKffq-bLNvYBjs2TP z$Iq`2Oa$)=ePRcH_eNxl@cXy*7I^B8D%P6AaLx8e|Jbj>7k2lN|mJs6ns^p_T_QFS;QENuvBl3P?7O^GYvv$lYes{vP=NkxJ zzJD3XFWAZI;AkRJkbu))IZfx*B%J>Q8_)b2?yfTh{;6mD%UfAI@4LU)?4CzcM#}2Wb=yCp1tcl+4%aq zONX((0@3<-@XNgF?PwIty$akSn!g7wh%`YICx_oJB zFY!vXjyU~A-(FwgF#Y>T$|1L!*6m}dzOH{~t*Q=!?T6c9z-Bv|wym;%;LptJ-09>I z?#>-dR|MM9iehaSI4m5I$8vUpVD}GC|JXTa=KJpV-QT^x z`#Mt+8WL=8>t+i8fW1VFgcB=ler>FXZ!~%KV`6#77!+fSz!Qz>s2&4$DRDUlN;GH^ z7LK9HjFh{W9{^aSsUu^IG1A?91+Jl@W*w?Yqa)A&;1^)hp^Af;5tL&|YOR1WakGsA zs+9stG)oFgbwW&~7H8_Qh|G{kMdm>TPe}>z2mMTZ!hi-dqM%8WtTpgW0?LwIKCw3+ z(ZMr7>U#=J8oRe3$_) zKNP~7UYW=bM?}lM2uVOu8I3wVjh3FCPEGfr;`$^SoyX(RUOLLNI+5f<`BmzBa5iEGLRc8O?<1Xmlz}(`d|bEomE! z;n*KE-l%Pe%+O)9aLjJ>yi5M_)a>mzYId8G?NRk#s1 zsBj%96fRXA+#apgD)Dr~4s)4aMU7y3bsDA=>2VFXlxM#BO&m~`g3aVAAQl^DK`c2F zCE|xU5Rb_rB1ai0gPBNK#w-8d{Lu(fG;_23PxGuC5glpXz8(cacs)#*mY5(tF)9NW z>VE(L%l#5$SEOn1UvXKg!>DV(v*ae0e2rQUJ-N!vy(p?hw1vnbxLY4fZL;^Na=gF& zI=rtf0^c(+Q!`OLmE*fN>-YZj7p)UBEp5Xy z*%MPO_l6d}mG$*k?rZPw*mo_@)PQ8vojuzjov&}%+l;{iL2H=b>0%f1<>EkTckX{y zKkujlppq>Kt5=)E@$5YXmTvit=L5-y#Xp3I!@dqAr-0gZSGjTS`P_BsLE?7OB;`oS zZBNgi^Ikp{Q8pc4dn~V->(t;>F@o$QUFqtXo(R0)d7iwD{9B`Jp8UaxH_}rhr4~LJ zH97WA4wZgf{(i4o;#UEC6=uIEf0=aHbadmSYTW=J^Dci}o43A~-rj?-ZMfEcR$EDb z`RTItCh{pcxKP6WZMNZ*!Edzskle9vGuPg4)j4&?22(CrPMVfgWNju*&Samn)~q?( zV{x)x->L={2U|3lM`_!U@YDM>{??CdrkMo~#@bV`TWaaWt-eSVWZ|#M5lF;M zIX9lmcAB2#+0R-IZm*NpELivcSQTH!UI+;p{rULAMsM;%a*aKLPicImY4x6dpL|i# zBy-WN#pk2B!bS0?&hDNi^*Mra&*mu0Cadm-)nDxwXSaMif4$v77Es*ZoNzS1#m#rs z=Lf;fS6TUXFIvQ=9WCeQw#IdzM1~@`Rdvn}Etu?$kCKaTAIPsNb6|W}|HSxN+xdOd z!$}XvJm%r2b zQ$U7m)_`QwqfV3ekc*62R_XTdqU0YNV{T7Q{9YCw^-C`w-7}V}jZJo&qWkxkSU=#j zMmaj~Z_B^c9^yKu@&F$+PtEmym^Ye#sqvzPGx@6yc#F!Z^QTgkxC@s+_vrI${5 zh4>`orl5AMMXC6P`{^!sR!#cSpOS3e5gt*x%G2FljHv}3$C`B4?9o}$@Jss!rvXb* zA$sP*)~_3z`o`k2sFBxYLnYq?clj3|NQK^tDd@jDeP^w(((Cl+o6lT^X4voLJDi#L zYvxG%mJ7P)CjfWk?Tr~lU6P!To3Z_KjmHyuvTGY$*7QH4Y}s@TI9i_+Dh{~S*`4$V z`0V>bN#9{{oYKsj-ELm=e}1ueU7XCH<-A+xm-ha9?jv41hlkc1+A9D4T`=vVtH0Jh zh6_Ux=>DNP$DnanT}4z4EmE41;xK|QMjuKf^^i}b&2MW5K{-H~PLXb;= HvXA}?zqUIt diff --git a/OsmAnd/res/drawable-xhdpi/map_overflow_menu_white.png b/OsmAnd/res/drawable-xhdpi/map_overflow_menu_white.png deleted file mode 100644 index e716e1f0988bd5e948a6d73e46bc2feb63f9a803..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1337 zcmbVMZEVzJ9Pc=`EL+YO0>*)8Q$**W*VkLGbq8*DH#y|SxLvXXG16 zf|^0b#)T0>bdK>7!WP2ROru0MFpMYxHPOh6aUn+cNf#KAhziCRe7fzX9~M5?q|FSL7Ljz?2LnV=20Z zI*ejMZ?XIsR6277H4}-<5o_jbpkT-dTg(uYha^ke!4r?H$b#%6WsXhyaGqs3oTYdM z_tA+Y4rq!O<%H}7l$7V043UPd}Iuxk!RkNHgR726hJT|PEmZ(V} z?^}VsXR*v(u|mKAqNN)#U2o1;L48WMbTg%A&_Dn!kBE|@IqN5!9L-!g2n?ka$hC&9 zqSHYZlz9a3K8{Ix*#yocNH5N^2^tr9nZijg17sghdu55jX7Td>4ITkS5l*H2r*iUJ zupFJ~Tpz&2TqgkywvPe(r1a9(KM%HFwN`ATou?Hu>X*p2t~WY-tb z_2L^6F=dYwa1%xL!5zhG_M}G9fmP>Hg-zRD|NH#sFDw$0=&`Ha6({#>|1{TV$2L8? zGf?>4TL*4;T>gO;jK{kMhjvv6$%!nz*!_!gwm*Dv#B)=X^X z;MQ~C4r6H7lTpB!J(-&?ghuDy9wDyki99X^`=b@7&0uMFh&mi29R zb?!UXKQwu@cl5OPtMM;4P8{B_?_A62o|BHy6CYmij3BNjiR-t{pUUm+x$yAFf~Zyw%PU9@-)By o(VlDDm$kUGGwx>Y<%JI-Ox*p!H%AUW;QY+Op}OF3&9)u?0AG65FaQ7m diff --git a/OsmAnd/res/drawable-xhdpi/map_search_dark.png b/OsmAnd/res/drawable-xhdpi/map_search_dark.png deleted file mode 100644 index 45170ec8cb82b46279006a6e3969a93cd0d9a330..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1779 zcmbVNX;2eq7!IgZLcv0&UW|4pSb@T3k6dgd91@NIK?oTEwPKQ8AOp#U&Eh6hXF%F2 z)z(&^;7}1zup&|gN(EH3)~a|g9wSw(GPH4cil z;Oed>iWqQ&m(AqHqtI^D|Ih?>?t68hhBxpcKq#I0f{-gE|K48G* z{3NjoR++t2EizVq9BU^EjAOawSp##*R%x%VbN0t zGi@MEfZd{2N9NFSKCATQ6^v$;>Xl)WWhzi?$RMlM3?Tv-G8*monnYV@HSw>E*P<;N zo0)*rgoVtZ^lU!Tyr#))?B49i4rJBHR!{~uDcURrsn0PICR(YG^Vu%~+FaSgJAQ6DT1S-VE zB2>?x;^Y4}eh@1PvKPyLif8(Wtw{UwRV%QYSItD2*bbuDR$0K^{Dkd5o>CF2vEF>J z^TRE!+WBX?LRU9lKjS(UHMej>vFGwN^`56sW743;lpP!VecQ)ok3|h9=$InU1Mv;9 z#Xj%7uPk>tc5BQ}EzL7Qe5#wnj+9l!k9f%u6RF!rgL@s5xyS1);L(l*hs`&bk)@=1_>Zj~ zyGK0gojMi;DO)3BxnF)ps*gXf^y+Pr&41MV={w4ki6JX%qLl@u%a6ljOOGb`N;0EE zc72dKba~)dY+sMOg10lzR`(39zV-_yC#-FdXS(@W)i zk2x2ekh~YFEz6rz7r2b?Ae6UhaL2X#hdZ~-tXKD^*Ur3G-z4aL8oFX}x6d6g(a}Hd z(y+ue%h`9GU)g;hCf~bu=I^6J)XfxF+S|0`;kMyLjxD|pI`3=fp@p|x;L3r#@pT`c zVtBU@x##l>t?gHrQo0tN#`aSZ@&YTXY`fG#ff)@2S38p~7N$t&iCj(wR22QjH-9q# z4d;TfP9skbosa2A>F1Q@t2$H9W5@2;HhTL(%jT92uKsb6TaU(NuXQ9%0CmjTkaA_m z*4ATv&5N=wHY*)$?GCj~F|MQA2K&w&s6c|(G&uY7&tBJk;pexYxZJm{2iZ5+@1cJB zf{H7BB9q2r!t54(OwHwRMO`uC-hJ1!R#EkJ#z>Dx_QSY&yu-hK zx8=wW-Czj3?(C0c@)iI+s{OpkGaOc*VqTs&@ i^AsU`VCA^?3C?zhy-wAOb06A&L(1?tMZ@xSoBjbz?WoNF diff --git a/OsmAnd/res/drawable-xhdpi/map_search_night.png b/OsmAnd/res/drawable-xhdpi/map_search_night.png deleted file mode 100644 index d208cd96bfe846333754960391dbdf5b6bf4e416..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1780 zcmbVNdsI_(93L-{SIU53rga@ED%|bfyBAv^Oa?e%fQT`U3)yxrY{GWec4dPI5K#$5 z%|Ou9NRO#V2%!W~@kk0qe56M>po9_{DgvRQ9)#`?tUo;d(LMKff3NT7^L?NDX;eh0 zll?q<3Wee%UL}eqXUIHe&mzCEme0166O9O#5^M29!YJ2c6d{T$FhH!4Ct=Z;98LS^ zJmyECSf#3Cq=ZxwE>PkchTJT}FllronnLjlFzMvVWQ+h5Sdv=nPampppaW{upB~GR zKoVULrc$p;*JEqbBVv^4$x1#-4_E>CnFJ((1|#HvNt2>A2u%L;DP94&HXk$Tz?2A) z>`#AblvEN01mSuN;4rwL5{6-b$7jGCUlzjg0T2l0Fd;q@hCm1wz>olefa!-$YSW{M zf@o35v@UYzPgfCyPQYXujYfu%#lZDROqkE-Ga-bDARs9L8q&0c+yrV3o-+(0%%Ie( zb%Yw%0%k_J0^daV(@9HTx}ecXB(I3IhUq|&A!C~4Iws73m>P}QuPJE*5sm$8#%rYw zF=;xC8I2k6O?oAnk3`QIFd4fyD>4g`)(9f?YBDME6cMi6q`|a=SmaM9Zy2Z=6|gxd zs!(vbAj0LcK|aLhgM2=UfLsj5I7$T@OH`mUJg>vEe0^EuK-lC9!@*o3!s74|wusN; zAt5{#Zw4#Y8VI>oiOuL%le(v|@Efs$AU!50aD5Dpr_5AAlnN(sg9_IHK|xbl2bRXF zwJ2^hEHkI+rPm@%uTI6#5IwE|rs6D6zs3eOhlimo#24goQ3zyn*%;`{hm|1a3qu&f zLOEDvff#>!6D#}u2 z9g@Q8g4Km}EtU$4$@*-#&i=OnBI=R#9!qbb{|TGECg|zx^d_q-PTL6Y1K~?XUFJrO zY$>Jfe6sX(;{C?-D;9z#@t$R=?p@YBIW_Z(#*ptT+#IvpTd2L+hTeH49wYJB^|4K9 z69M(gz|LirmpvzTc|R#xpEx(%k|nfKSzZgi6c5ci<635OqWhtH)dtySey@k=g4LMU zT9UoBIZLIwpSfr}xW+o%Z6Z0ya#n6Y`@Zarx98BP!@*DcQtUkb zE-4BxxoX?z)w^Z*9*qj|O2cR_!>ga3an;zxY&#}AMy
B>T!R7hxi7$TmD$a3Z?as{N>^@oM zXQzvsRS~6!Iy(7W8 z!riek-7Vh?blzWCc8gM77gmsaaiFg_*7M%@aP5+B^OlD0p!LLEExmc+$nzpjJAf}d zIdr)%t`@3|i{FmGahmy+jJQ;YER=JR0N4#Di!wiWfZ?|1Nrx#ETj=YGTCcvWp%F2b;7rZ~DIPy?O6_D`O+a z+gc8_P!!dc9oF+?JrKToo5}ZGMf*XPgLtrr$59DafDfs(g$zh%9WV{^5Lk<+)?qJ2 zMHlQs5f^hOR1-Nd5cZNO>U)tHZW?lQD(Y0QM2<8xjHmhIss zAC51L6wIYrQ?Z!7V{~s-B?Jz{fUY`oZlG2*rpBw1eR#|sB&E8MY{elB${uP)Vw}ak3}qvDP!!Z99OAS zVwHFd`O}=BC<@1moG7xygAEp4463XfbT$}t7?{58VH>%0$OsHHk2Qv5x^)G|%jLF- z-Jo75QZlXzJWh!5oa2P|s(A-E5C5jIqjykP^dOgq0h;$s(vMPS159eSd!W#fWTTGy zHfai&(~&vvKo@6qjUj(xmTi#|S-g}=mRKnc6_$@n7MoH8nS~Z8DRDzGfgv||cES&) zL_v{+jIN7uK^T(I9spf%(phpyFGwRgxtN zNnj0G2CM)QyaB{yJY@lfQXs~*n4n7( zSrpq-eYpPQI?aEB(0ER$JNv4Hlt*;sVOGcfbwWyIl`jaLE8; zCS#i>i_W1qHlsr)M$9(Yz*!RK5I>lM=p>He*Jfn$AyZN3*cGYUAI3j+$=&E%5I5HRjfDlup^8}-#t?uGr>q2MvSTHL zg~0HtH_sAk0GQ(@bMx7J^IDaSvWqY;M&!2B92)@CYuq$uDCs+)0+shqJm0Kg6(W~P2Ua?pR z&Oq2Qjqtfs`Q|K8PcZ~26UiYPB85SPQiRB1sSHU1B`~58!!j`}hhRhnqbdmk&OSoU z8iNQE=aksnF8^sCpNQ*8@AkzoaEBM;L^!w^Vz^%w&5XI%4k0rKtLSt;63zplBBdzw?51H<0SOWaw*`|4V6cj*8yq@Id)XNTEP z=DN17exkSSOlSJhKv~pX-U?DX^618@q%v1$@~Zw(>*o6z?R&4@duy_Is7p~KXfVc} z7a%DP8SiPKM@d_L4;?5I91mJu(~kYAU9;G~#4`a0H(ydbu9lbctGhdHKZQ}jYrM&? zUHuO(91ps~?_V+6U%mYuokv4^Vs8AB^~`qYMnOx+E$xT5H(h250n^UVBY~rXDyltz z*0kib_@A#TO}i8?Fz}YpJ^IeAMZ!{kWcRY#hdJsder!$UU}f#YRxl!*7akRzu1?!x zlm_uzV$)XaZ2qOQaYf2VIdHW;UG$}SwpY5RMDG=q&x zoR}Xm{gKC&7u5k>t=d>Ne8gNI*aA%7Y8%SC%{u|z99wWc^i)*O)Sa&Ah9z72HXKxI zzgIPlxzaD*j5t0wb@?3a{*zhs7bWM2`p=qHcK3NQ#xGb-ulxqMyU=|Fqy3Z4xob|J zRCFzC7^}$}5AWigD*S0%f6@GXimqqd?j&{uR~r4Zk~SqwGOu6j>z+5h@y8sy`rG&e ze;s}h8wJMj#?Z+xm%cw5x#MBtc!ur?EhxCzXQ?ITtbI2)?q|W!q9`(QV&9>ju#z1G z0clB(+N*k>l`Z$w{xH1K9dbrHaIp1_yE?v_H&S%*aO=jWo9i2ErVBjLyZ~VBiRqxT S>qbs^{|P2zrr}shQQbe&muSBL diff --git a/OsmAnd/res/drawable-xhdpi/map_up.png b/OsmAnd/res/drawable-xhdpi/map_up.png deleted file mode 100644 index 8d15fd75b6fad5ff9a048f2c1c0a256ef01add69..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1369 zcmaJ>eM}o=7(dEb07HgT*^r>O!wqD+-bZ_F@1%p$58ALIb}Td*eq8U~mJ8g+?vAx! z)WI~uGz(L`$Qfm66=594^CV3qo9#M?} zG$iv05COc{z3(efgCMytOD$0|8s5bTs%+&mHrAA^K{SHY)TT6E=l~`f0|`lSW4A9% zVW=d!u~sHbhBYr}mx4Vy*xl3ABJ^|!tcca_L~BwUbRYwhM^kdAVsI%pw&a(C@0nu) zLzhg<4mY+;DjIG^y{ZmS#_GTYlCq;t)=DuBC+pmS(r{0ZE`la;lI0j1N7CrZg~4dL z80R9sz)CE*b7SqMsc{66OeU>Kn^n~l1jVu}LDB?GGK0Yk-IV zL+#Q9SdVx`77Vq!cc6?RWWznFORy+>r%x5SWT2QKpBsZ;tfC}xc19FqF^2=E9S%Fr zl6DqnS&_yafC7vVvx9g{%=%diZ=*<`-{B4TT|SDU{C1DSW_NjM)g#fB8a zoBWs&;0(pt)T&RijS$G~q=;(Lcsx_4<*a=` zm-YiOpsO;vq%$Y2!68nGE|)XTg`qym*&>%Y6z@ zU>;hQ4i|IKJSDgoTx4xLPEi0#$}%(_=V|E4!2>7n#0W@{$h6K~t&}~2{h4`P9Spcx z9W9{1dD7wF+$?I0AxKU~$meNE&Hj2k+&I%*>@WNCyFE|s+frSKo!3tE=j3gw_joS$ zTPLd?GJo)IdU_}_S@qycN5+RD{R&xD zu+Fk^@W8sq(42xGIu#Ag&j0n|8-J9|_s)(Nd5Zr&Ro8d^T*#vWNe?4(g46Q;P_~I^LzJ`kH()L`>bJZaptwLnNs}9$hPwN mUlt~p6VGbUd*<^~NG|fe8cHA8KC&_MvkUo~d>_?6*Y_XXwAp+B diff --git a/OsmAnd/res/drawable-xhdpi/map_zoom_in_night.png b/OsmAnd/res/drawable-xhdpi/map_zoom_in_night.png deleted file mode 100644 index 768ff0ad9086b4a20691fb248c36aa2d5caf8d91..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1110 zcmbVLNodqi7)}?Y4ir2IdU~WH3eDPNG6_u=Co}C7rTFG?@!%PiGH>A^tW_J7~M|F@?m$9fYd6AZ)j z=Eki8-NpFtIYQT&&b?c7J3%tDWEz)A4Tgvrb#MuRoChnYfS|K<^(`7?n65>)I7?>p z=M5WsJd81X-3ut2VFrim0kr230VPy%eUsf;f5igVG1(b4FXn?Zs=DLLA(~#EEZWO+ zw(hXQLtwCOPz4?$5Y)YSKQihj+t6#!bNno@paCIsCfjssHa`W@I7C3@lbkI|3ea?3 zQj?ml^#hsS1u-SaA}8vGI$(%0XnicT7CL34U}amj=*?uSgan2l)M_=pHo)VsB1pQf z3!*H@GDi_ywB!?5=lrOzt-(T(9l8N=u@7R6u!I+g$x=_7A$UPPzpvPjT8W}56Y4M! zBwiFeFOI8$jz|Ihb>l#ER9p&>P(Tr02yI%Aa$lQFb9cC*7)ZS_E`%;E3Y@pFz2G6A z`bQ5U(glu9{eW6ZTbci6qVG-l`b{9-lF~Lz42Oynp zR2`g|aeW8ZqO)G= Kr1kXN<&{5Gja|6_ diff --git a/OsmAnd/res/drawable-xhdpi/map_zoom_out_night.png b/OsmAnd/res/drawable-xhdpi/map_zoom_out_night.png deleted file mode 100644 index a573adee77529013c84a7fc93ba2cb982af7e09e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1084 zcmbVL&1=*^6ptT>F6~vQ2MH;nf=MQ6ve|^jwN0{i!EMWSrA0-YO(xyYCKHosH(f8< zi+EA+;D4atMeyvw9t0J=iXvXTYxN|05S;98s)y2pfy|rt=KbFHyE8v~ezbI~#4yZg zea3E53iAK(A$l(E|8<*^G2$$d1?-b9Ob|2W;WlFHAzVgH1ig*xuhAsK99R!pOJu2W z!EkXXz+6Yj!kD5NX0n>a&|N`#yo4`1hJ}6=3O8utfmW+ zTGn*!3@cM!1Qk&RJkSkw!T>Tm{5a|@@qD9c*M`0*XL21vVnYXaE#;cEgt?+mgz*<7kQ{Nsdxc z%8sMdB&nvUnl9A}Y&}W|j9gUs4yf-T*4`6qSP6mzCoPOuiz%4zV1m;Qj#*Vzbmivg-`S*f_ZS_UewwiQV82O6&{8qFNaP*!|y zi1+@tej*J@%!lQl;VDFPBJ=CcDo|!;nNUPGD50xTHBa27Yj&k>Pqng-Up_oNvIRz* zsW;yE*XpK!|Hk`UFMeKqynXK7z3t;CwU?jw^|!J(K9#Z`*2UkwN3Y&~pJv3P5A@EtFjt#Z2u+Gklf76rcQ{S4pGo8h(?h1j)Eo1S>U1)7}AU=_H*e& z4Aqnz5$8jVTB!fX5YT!=MaK!>{IP2>c1mMWFX1SVa zpq@ohGKbwL2AR%ZLAR301;d6@3lt0)Sr9EUKv1Nvd-tkpJ8la6OJh-OCtb7vnF5YE zY|Aho>iRku#_r~hJVnTc-(qVpDPm4AmcVY!=P`Irqv*R<27nX6YpU&eGzCu3S@ELP1r+O|zI6f^HU=%s1?)&j7#JwWNP zO&zVqnb#KK08~{9sSz0usWOW*5*@-LG9%-x#Kj3#|Y*3(W)!*g-aImDaUi+0-daH>dV}*F^4azKrkNf5*Dg2d!t5v1{*iBnG9q_V6UX#*f_MNB35T zQx^_ijIWton<}E$+h&UWJD$ns_CIpvXyu7r_x*lkDvnRCOrpo08biJxf3uR_@cFCK z)#t1oJ*kJvOlH-kKTDMf>G9cVeD73tb;h^#?@yME{xbK6)4H^2BjT%k|Im7PI``Ru)BY+E>7Kde=G}*+>QRl^g}+X=)MdNQ5jTS09`~<% z`sJ_R;6`Uw+(^b diff --git a/OsmAnd/res/drawable-xxhdpi/map_directions.png b/OsmAnd/res/drawable-xxhdpi/map_directions.png deleted file mode 100644 index 9897a755db2af73e6b00c0d10b2fa5e63ee7350f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1598 zcmbVMeQXnD7_VK2blsLo=8#eJXon!|de`>)apwx%+ODn8(v6aBXpGmp>sGe*ZoM1r zhC!IPwi4<_a4e)s`I-wNfsqM8jKdAb;v@(|<|1*7fCl+6V8CcFUdM|5LHxr@?%wx# z-{E~hmot1wF-5aifx=1P9GrQVq{`0wglN3HxahqF|3t7tD5!h@8cl%zcr zVE5y-R3(Lz&5grUi9nFC&gZV?svRpZg7z!$l#U|oXLz(gP_it{;6y#e0UoN>7cj`~ zeD;M5@R0^tmBs-(7!y_Jv$X`NRV_|8(Na&Kq-@zzpd^g(2K*F<17UwdfW^WF*_2(3 z-=~ft88D^7)f;4wNL4#rfQb%LfJUJO30R2$I#i+5XmzNr7*O#t1nVIc48ka;QDd+Q zn0{ouw;<`oD$V87zIe$XtK&EZgP>3-qzI`Mbg&juq9_W%DoCXQc@2_Gy|ASQ&k5R zRrvxW9b#WfmFZE`W-91gN0H@0+7C?S8S_1XgHEqfYc!+|L=Zv=Qd$HCQ3BS08bnL! z39ScF>0sG3p8UW0gLqO$^ehxWt*eA+M?`^OLtXbU7y{i?Q+3$A-UuZ%=NnLgw7l`Mb0m zcxT`6wdSo4`roRP+`2Y&dBG*=@ZFL-`xiqtk$BNl3zDMk8w)Pxv8~NRC-FF(A<6kV zJ8?bZEa zsjyZ*X`9Hi=8F@P(fOMQ=`%%4d>}5G*NWRg}CG4IMF`GG%2&*ZT?hAuAg&OZ9uypKG{ ztV-`>_s)I0_BVPqdfIz7ww%`=F>c=>=x+47yN)$iU4j~m z?9^^yZ=1QzBqlRs`H@1~+?X_yVUxr%Ba)w?^IL1B&g7i)(K)eaBXgs3WAm)SsKhR^ zWkhX+X4N!aZCGXV;NQc{Neoj+3_vc z>|?IRH77q@t1Di diff --git a/OsmAnd/res/drawable-xxhdpi/map_down.png b/OsmAnd/res/drawable-xxhdpi/map_down.png deleted file mode 100644 index 6bba29c99b78fa859d7c8a45d5531a04bfe5ef21..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1621 zcmaJ>ZBP_t9AAM6JjDSrHC}36bTNLZFv3 zLu&~K>Im3)kGG&sZ@FpFYZP*18cLZ>J7OF&%NBd7tvQ5YqSgvN;C;KT(f)a2&(vbTF>d zX<-u8k}yefIIQC_o?sa*?`F6d&*Sj8L2J=dq#@5hVHlRDHDDHvfv{?qS#Z6c(x5S{ z-7m?spXFn=y^8G#tp15uqfO*#SrA=~)F+R94&S22HX_z*!1WeLe2Bujp4(qi9N@5(wk!~ECz;ln} zZ@f>H6D5v7%pD`6!)c5)5HLq-Xc)tIC8Z>R!)_W^m~=F+r}Yq`xQIks=aE*59Vz`8 zeVrT(WivTiykD6oQ5l@QuPna~0CDAZ%Hj&0zp>l5BEvFsOJDkjoe$=hQm1CSX1cbw zo_~2Kl(xh|ojM3H)bi9tAC#ne_cJ@MG(63i;Z>+!YQ`VnlhUaSry5B##>d@}) zLl<28e}MAD&r{>3q=A#N1(@1ADb~h>f=MYZSX_Lx%x}u<$g%ddR4laSw&(V)JMoEg zZ^FOHyBZ7I7G0Y??e^3`{cwv^_}ZrJ4zV3JJ@;y%+42HDvhb}^!w9#h@%Pp%|8?9< zl3VZyB!z#jI&0`(zd2qzoyZ*W4+7 z{oH}A8%L{V-J?TwZ4FbKnY(x9TpdXo9Qf#u)0q*Zx3hm}YiC<{YuAjf>Wr&3|4a$h ztB9taeTz5DIFFfbB}Lvo#*{j5pdBOm^0Z=Izv|t=y=d#@+7+n!*p9MG?ao<&LkX^J zE-2#M+;P1n^HSTEk1zjPmAmKbxX)VAnine!wZJ~xJ(bVQbk91&Jy^fAB{=h9R##8r zsBWld!Czneb}Y#^=YGa8b?}+yrUjn+;k(s$^A2V;H}ReW{h>E~NAu^ZvR_K?n!dk% z$v*q7rV~3>uN<%9+@*2zV-iVuSahZOb5q*NPago{f!jmntJ1z2O^N>K?RkY%r**^T F{{f<`MuGqU diff --git a/OsmAnd/res/drawable-xxhdpi/map_drawer.png b/OsmAnd/res/drawable-xxhdpi/map_drawer.png deleted file mode 100644 index b007054f4e79e6382fea505e4b5b0acb229ad901..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1157 zcmaJ>OK1~87+!6xMXU(6pdMu1dQf!Vk7SlcO_QdLG_}NNdk}GUXVNb1?yS30lh%V$ zMNkk04|)*sTtNg+>Y*wKdKEmV;H`pE@#4*c&ZbHAP+ZuZ`DecW``>$QY;>r5%kC{4 z$90#63l+8wCvR6L`=0#%WQZ-h=->oBL29%PBh2LxaWG%<;UunLi000{#r+)DamA}n z(24Sh?Gj&t2}Wx8A=Bo#{v(YLy3?5Q4xaRatnlOclE8Z?D~y|Er5xt*ls7yd;S=+t zRd;^c1xPq@nD1}cjKIef@(q6`i0wvJX!6=@pB&2q--OWVtg!0TM0t$QlL+&sWQne# z8hjc^s%fP``Vg-%SynQ#rico#P2E;BzV!&qT7+tLrBH0yVp3L^qBOK+xn8eJbzLIS zq^tq}WJQxTO=Ji$o(m{!h(X-fW+>p;jl7V0B;XT9=#W{O6_}^1A^2gryha?vtwgbu z$qg9Fs-(!ipTyNf$Fzd~y0I=guFi#6uHcx=MlP#It*@=ja`%5j36ObXACEj%6gX2L z?yQdkS}J4(b|WDV*@lUb<5-rcS(YIJ#Q-7zNE0orV$*dDTys#HXFYvoAgAa>OB>LE zqN;;N4w%KkqGcHQVouY|TwAvk#1sZDZrk>l?Ut_kUtK#NVMs|-C1j@E1!Gf$l6Z=Q zd_Lc-I=_G13lOQt2a+cOIi+M0~!PXWLuHhqMAQM!*#nLkFT+Gh7imP!mFO;pRmzi(BmsVaq z=-GK@();k{RQ2hz3tvAMxvuT}(M#Nhjr)#XzJHTk{I&VO4)mJIJwLDa?%9$0d!2w% z`=#+4w;x{Z?MQWvy*v125iTUBO;8KEyu5fWdjHsA@MH6@Pn#nx{#4g3uKU8Kom^(N V^WLY;*Y74jhSK0@;nBd^g+Gk^XA}Sc diff --git a/OsmAnd/res/drawable-xxhdpi/map_favorite.png b/OsmAnd/res/drawable-xxhdpi/map_favorite.png deleted file mode 100644 index 682fff7b51bb0e1a7d887350f3aea446a492955a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1547 zcmbVMeN5D57(X~g#z$l`DuTgU-GV@`y>h*~Hk^p}p@$xFc*toSqu2JJfqvLl??6We zi$k-?rl|2_er;2yTSTYcHl2KkxH;WsrkjkB_=PybB5KTZ35NBMbNj>i$C|Y7`@HY- zd!FC()wP8Ma}wiH;xrmfqI0gTNL`We8ylm3OQQd7P?t%H-K#7V{7Qh77)>56_!z*+ zk>yMgL(zCWa|W}9MP z;37sAmP?dc5C60XSk2vw9fcKDHpBvnRf|Ga*#v4i$MA~NW&zb39nI2&*^D6B7-oj_ zX0sl`5Q84_;gk_F8)?Rmpg2y^WW>(%@D7vFYDd)qnC!S-Z^!UFyTgtc?HD@SWHUIB z2-eBV3dvJU#5b$@9>HQS#1dACAr(RL2trk)3koX)MUX255wKc^s}7`>uskgU38Xyx%VvycvKq1^m`XMt$8hk#p5y#DXa0E~P z-~7QUDLC9L|7o7ck=l{r?Xyu(g=fRW@ahCf>Zo*=Z+B@l(V0$Lo+sG-=hk!i9firO zZ+d$cRf-c#C&Z6aJ44sLcR^hy(LMgm9cRzu=o{mdo72*Dw)oK4-Mf!xED@((F3XwN zn3TWaY@fe=@ZNQ-C5gYAnXX=UYok z6EEJn?$}p9CbYjzzMNkX|FFq-8NE2>ZhP!da~*r}z5JNCnEP?Rr@AxtSeq*6xM%Dc zEmF&bmwVo^Xd8@=8c*-6o2uKPo$#o&ZF(@iGA6{G$^7Qaac2|OFmm$J2jfEV>-UVm z7u|Bo@BwJ;DJ~8zTsmQ>dv@@Pj{8^H-c3w#_ObrnbyrGVE0bcf((Cu7tuh?w^z7de z)t*u@D!nByadXO!3w71v-Q6LkVM``nxa?$Haqv*cuva_zt}(LAW->9gCQx3ju>OWIbrZy#OU($A+UTk7IBpKh^#ZSM3gnpn#KQFq%W zo1?b9yJ=sp4Y8L7v@N#5)WvG`l2T)hwWE_Y;@%?#>ke*g4*#B=_5$0X*=6GIuaS=p8Qyx5oPi@Zv>0Dj&7M1?jA&K?cO2l7m!>qa+HNnvVKnmj>-;j0dX=Ay9HE8W8^%j9s>JWFqFH$b~K|1v7v2}3!$QLqL@-%j2M(CSxh<# zdV}E$`82$M%LBOr4w{D}gJ>#_Kt@vlDu5Q?C=|W`XIvB~d6j5*|3~TL}67igow=ODxS@4sw)Id4N*&V?(Sczj&uwbO88Qh;_owM`WiJ8lnY})zNcI&Mt;dNP51*26ar2_;6nl9 zIAk)K#3A6&9Dqwi19&2tOXcJ6TpS7Y4bT67^M{2hphWvhgxJKl5RPA}u%o$>F@J?|5#z zR1y+qsVr{tF*0-s?X`!OEjVS#-i>q^T}bTAkPN4q&+lI=3A0`la4N{wyBb-VlC{Jv zr*hBgsa1KI>-&yV$7-%BvamvYxNf}YMeAhy=Yp!t?O|b+6>pynnz@=d8XkkUz`(@F zD@65jM~zQ(bJx7&ZsBcRS|l=iY0p-8A;FBB9~wuIlrMO~#Jv zQ+Cxb%pKq@hiqCi7XVkUa4ofixi_uct+7GuSo6IsqX4VKYLtn+;eCyOVUhbXw=Tet zh#)!sZc)cHZLzTS&aYz{v{=9dj;D9=wFfpEoFf9o4N|Nju(zA%6(j1N?`We%1dg7a(Moqbu7B|zo7R8RTa5`6ul3^PBv~d%E>9Pya>>G7PrO8jVo{_NDU+3ilYlLT$ z{MS0p@$EG7&E4tiJ8enGMp1a_LP|fw6;6ju8BLjpSqru3^mktU(<@=m=1;*+?7g!6 z-Q9<5qGUib>}FOc}KhW6PyB%IYQ zEjBPL@s6b*r9}o*tbNvV+_(vFusM4~WYhQfu^)UWWtEoBK8pHxvY90F=D@wp9)9dS zrZvmbi|cavWoe>b^&^!NrVA`bhnWx3-7# zVfp(loJy}7@5t7RQ+I|}AQFQ<8Qp(p@Fww{KJT|6#W1U>Yu&q_^F%F*j4{_NJz}+P ztfkdw;tJ!FcC5P#O9(Y*j2qu=snRKim#|)JyRf32*j8%NK0c)pl?GS_4+Qpu9)M0m zGe|hID80SAzS+B>!lxH?u({v6Dy%TAnr*eH=Jxr2tx)=P1sm;2>_hAiN`;-tOH-%v z?(~H5(&L((dsP+4#pT{IX}Q`;^+!x&cXa`LkHIqmP(&ZEkWbP-53O z{PNm3yn4__Q-fOb@PU=)!h`Iog(HTk}t*!YqR5o^*qtXbK;$e(}L-c^Ce=FyZvuZxNZLP zQS-CmQ@u;Hv8<<)m?Y{M$H_I>)8R!8u&T1uv6t*)da^^pNYah+Y!`2r_wuoN((ztg zUd*-I)b8yA3-*`7Uz5&rJD2rOg4iym<&??9-L6l}nmQa=cIbA=l7-EOEgF`#o-NL> zl_KUJcwnhpb}Iv+a31LCoeXT+);}-8Y2~zWS&>21k-n(6*5SRTw6vnKUvr|KXy+6! zvYpygK0+#7CffKxMXz<+Uc6s>H1JT->q}*W1>U0aENLy{u(0l@Z diff --git a/OsmAnd/res/drawable-xxhdpi/map_layer_night.png b/OsmAnd/res/drawable-xxhdpi/map_layer_night.png deleted file mode 100644 index 9f8429d3d3bfc5646f14d3c0608949b9eed7b638..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2362 zcmbVOYg7|w8cw(fMn#1p2#PT(1tm=GA;Cays3@Tj15%L4kW4~Kk_pLhtq~NDcmppB z3jw*PtFT%?#LBJ;x`L%BNVL`pD)oXG6j2m#RkS;xxckG?A3NvFeBb-c^St+W&g=*a zT{#2ihQnYmGlEwM#pt?f{I;KhJ|mvhuSA!*NKh2A7FHmspdP~T1l6hxJ+w9>R3ghrl(FQ5zySR6G&ZV010f(jO{3Nt*l8TXgkCnfA3p{N z_z4J-$RT`mDoPZF7r=T5PxoaIWh62U&t&4T@BGC=YJC?q0@#imo)Bntl1 zML@0THHvC5R)b# zlY?k{CZEFN@p*g-nL($}=#$)FtpNeGGHBAa3bp--OZ`(WTcC$P1lCJnSUuSVVF@q- z8xmk0ULcsLI^JuYN-Kv`4c_Br`WUqk(yLM+`3gO(!B6Cwt@?rw43I8k(EMaXI)g+f z(&K3$8b66iWYL&t`HB|GgNDZFI1ZCrRrbIFPt~PK0Z#(k`{@lp}yYbz}djXw!)k`~@wecP)YqWAV&G zLMQr*{RL+ddPHZHP<6!$+=>bt^d=v!to&NF zp)5Ov7h%>`Eo=L!q_~*kzs07VRppf7@!kCqR?k_uvdBGT&5m~_45Xa3+ofuh#_gJ# zt(uAHlP>!k_Hw9e$ii)J9c`h)*+mkr33Eg3x*I1k{1wZJV>?={#YtA)sTjavWMAda zzqZe3Gui5L9_A?LaGaz9=ZP(FFNzv#cy3MF_f}ToR$O4U+O}%vF{Hk^2Z_u~x4jmz zIqpo66T@(Ht2BFF7}42k^|X+p*dGqJ^K7l0mN@9MpZHjlO2G>)vxEI-Bau8-91ays zyMiA+Jvcc1U;RhFnIFDvC(fd>e1&*K=P%^$viuTk`8y5Mv3b+h4_VT>lj%*K0gbr# zQ%fs4f5LWb%M-X%FgKQ+pI)6MC7oK4d~(oPz2?_eX8$X)CCMr4$-zbD4Q9%kqS(M#71#r4hAI5kUV@i){4~RUVYLMZYv7oS)B`iYvz_q zBAc5=>S{M*=b!StdO3&2uETa)cTD$-m=|`}BPMyFFpK$@Cbikiza_w9xcydRQ#fKg z_X6*J+g|ia^}^Hro#Pod9d7FOndyy-S~BRR0ZoGPh?LxbO@eYxpwx`*y(O`5EV0t# z1MFe?uyd^_+GmsPlwJtq(hoQvzQjH$v+lK8VrX=Zo+cXg_Vw?6ZB`^KCb+7e8ggSJ z2Ijat>m0jz{TBA0+>QsnC)_f)vO<=P5p&n!R{o8~^2}N1V@DVb#;&#+i$ptp@3j0D zC%cM5`h(;C^IrPXE^cx2?V%h=G+xdV1PY$NYvFfi4HVsLZ`}i1_d-7&C~G!L_skCO z_`caE=6HCmXhBQio1|glb$ct(Pz2Q-SKJYZ?Z`T<8i<>zx-b`vrA9Se zQ%e(Vu&X(x(KU5HI_Mf$kp!?n*&ryP@w3G-qb}wq$B~<6=Fkv1cke?#!;rGHS{ zqECoriSv8edWk{VeTCZz4>dM(4V8+<cQuomJ@4wtfT&H#Mgx4@i0PNDvzE|pi zM)jucbJJo%y2heUKWpeKh-Cn#k+047_jZkacba~Def^v2-GZ@;TQd8{W?R>Fgx@SJ zRrff19m_M`8MUVl2IS#t)zZQD*2c%y%J%Dlqf_OcdAsl0R7XR%-Ff_3=?HZScghZJJgRrce$+$%@f`&w4o zz1#_U5AUWAE!mFC581~GhzqT&Idbebmq#`~lhairZa3`TUwj>KCbE~B`@=)AIJ9!8 zYv)Evy-hTx^rly4F;w`XOGxZ^p0O!sj-ZpTTzx07`TJepGMr1~N8s~3fIsa`-p>!t xmT#cmi`lq2{z&wPT5mn~^SA6+)VmE?Sd5VM+`eNz_0ag=OmI-Bu!bMEsk@p0?jN)VTy>+Ywv|t=v}=YwgsGK zndma2o113n*67s1qN2F@72Vw2BoW^zEZp=mv%*K6}Bh9*gyp0(!LEHe#xjNV|I zNmAAr*DeHPPH=;mZ!h#c#LdZnEZ1m}04Ix5nJCuAvS7AHl*NEY^rIFFs&a5{ub|A; z${h_I*$O1@Qo!d+q7NMmveEkp0jxn!SLqlRPP?=^oMBuP&apg+Yjrf>4J@VO-6S^5 z=l^f;2q=nBGUZ>H6I+7ms0<(00h~OnBp|@@kzk$dOLWyCNIYk^=9Ptd`!{}4G_mCA zmFF`n+B~bVtw~$n>1ERQsmZlhg2>1_sxvpoe>M?$zFqb1tCPF45=x?5x1}>l>%KbV z$}ZV+n9iEBwBTxC>!F6a&ih9$zi_*EeWo3oy1-(cF(bhmYulWoiDL~>;zp$T__9x% zT-8lQ6+i2vFRyD~*7E(-()rBS>fY`+Q@^@&lqdb0n$Jr=_+vs3)mSq>LQU(sbaz)@ z-`Jnlgibv7CAIu2#9VuQOSGeP7QWeG>2u6&={m=iZ|F2lO55;*lfQp5v40WbxU~Fq zbMtXa#{Puhm5ECVI$iELYHFJ4RIyPrC;)6_iGrsyk6NvPeG^2UA$AtNwf@}v z#^!Mo`kvBT%(74O>o%=WMY5A|*o;BU?kBg43T($7zh182Hb8m&S zORmj&af&(3e7A1@M(JMsB z=uBR@BSMYnIQ8HL)F=z8#vfs5+iFx770m1$FCXq7*@-Bx66 JpSkFjzX5!VO-TR% diff --git a/OsmAnd/res/drawable-xxhdpi/map_search_dark.png b/OsmAnd/res/drawable-xxhdpi/map_search_dark.png deleted file mode 100644 index afcada973cfc57cb9cae1a5135a100b1fef44880..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2164 zcmbVOc~ld39#15Iq8y7La;PEP)MPTbNCLrxBp4Jh4dGY;ZO9BHKr%52CQ^|UiWcgD zXH^sjL}XVy7A(>NOBd=cBCUW{k+;4=ap_UXCF7i(Md9 zAx6ZYLUcr-aK7rq&{VY+LQIA*TbW)*ErRvxoiG%uM>NFwJag4=;lN-QSNeg)B|IHtOkpgVZ@;}Y9c!YJNZTV&tu+5ucg09J8+{$byzI2_?voJb%y4^Ny)m&gUH|8}Ro>|yc&Qut2-`n9>TNf7v*XY4zfVYTSo zq<`<)r~bQ}d(h>}j@ze*6!lOCBz|5QyVcDzJJwZfq~FeLLq_+Fc9G`3ntI5izrWKI z{i3sPf3soFk9{*mIoStYu0F_9ja@zzi{jOMpGt>1n~;`l)rTI)pro>kBKdUwEP4w4 z1sy=~XrR=~y2cu01sm}9mcG3F^oP9M+(tY!7+ca(a^FI;pB$8YhTcT&P*-#_I!2&e zsUM>DgVIP_>wdB&#dr=Sq~Dszn0@1i_h~bzuLG)x^isa&(oVdaKqiAKdviTkse0O(6;v6 zd*m|^Sg!12z9?wOqXnGw=Bq;XfAJHo^@}~#e{a0p;_Sen7917i zkQ0ZlT{V<^GLYLZjKs%$8`8r$;mwO|3|qzH3_Z{brp|ZGoN{=+>Uyely0*=ye9LLc zCBhYAV%v8IE&buvsS1kQufZcp>+)(x!Pq;|#miL{XlBp>L3vqQ^XDh@D=(tkqmKWn zOdmRW|JQf=LvoJ_uDT96QmXz@X6}}acdRg_6#E>xQPXYzxMuy!dfbueWn{O&U5|#G z+=o-8{?@~1>rdX{TD$T*qsDVWM`lUd#&9Rx0^Qs3ymQ;z`U@5<;Z^v!i z<8zZKM_&oAPoH6I(_Oq3oh}#3iU!x-Ej@JIIOv_dE?TmwKD}{I1-e4EzW7oNLDpE@ zM_MC`+C3TIDQn;D667q4DguJ-W$i`M98R72)els;WS_gIG_>;C9yQ6%UC{OHGxScm zOQ>65lFl7pxuMRXS=aCPa&*iZBC#8^Fo@2th312aPMjT%eQM@ht1x}Y_8$-@P83~< Hd9UO@E#yVf diff --git a/OsmAnd/res/drawable-xxhdpi/map_search_night.png b/OsmAnd/res/drawable-xxhdpi/map_search_night.png deleted file mode 100644 index 2859244cb10fbcf39aa8c3809b0692c7ad28ee74..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2163 zcmbVOdr%X19^ViIL_kqFfTl@w2oNUMND(knB}qhL z5s5rKxeEyf0DP)a9EZk5^I0;DiYT$@5Dh9Vh6aG(5QA1CJAj~|6iHO7*@T&vRsyJ$ zvk5zB(d1}tIHFMUj5xc>*hzyLHhPwqp|%D5_{6zN~|c7gItX)MTMx*NG_Xz z-4NwUIg3h@%cW8}9iq_bRESBYG9e~YPJ!qMjL>9KDv}_TFY&w&A3$buU=EE!Wl*Rv z96@JrC=rZ68kZ3UGa{JbTbHnrYCS4Z%aA48O3d~m7XCvlD_n<2P>oKk(Hvar0--{K zYV-F`2P!QPkq1y1P#|4S zhNyHZ0x_7d3_=(%8KDHoX;g}gu!xuczxg9!PLV9l@;}Y9bcA)JW%+Itu+6(+Le$s< z>9A3WCj^%PfOSbEH%x4}H)Yz*6Njz4b+VV5`9i_Zd*Y%)3zBvy!HBxT6mx{ zKl@nDuF#kKF)iJ*5&z6n9JX%{AJ}DO#ND%r(wVnR z#FH5IxJ%H8Q%%2hcZiT#W8ME<>1>Iqb=#l)@nY*;ehODkGdC2ko|fi4R5Ci+jNXbH zfPmal?_t+23cH?Xj#sZgoS!4Gd!i8ve_XZI!Lh$9_ASHQT}K^kA2Su+u^xW6AznrZ;3|s;1z3X_7$VK^|2=sADgp2$G7%D zS;751`%{a&P4!dD$2XM}=$pdSK&hkqt){1V`}~~M^IwmiG5X1_p1s{=oS7vHxO`ds|xhBz6qHft9O3F#U-CPyWPu7 z^1efGPJ61pn#;o{CH9Kea(FHeGmcZuFZlC@yex_}X=Zm7F8T1Re_qzdbX(22tfohw z{%((h_V-SX0ONIFyI==k`$l#Q{Ngyn%u4WVzwhb`G@53`A=b`UV?&!pwAo!9w6k5S zhs%-QCWV8DksOrObIhY{5YcA8^8EhdS64UHwvbBpZGPEz1#fq)^lm`9C^XU2>BmcT z4LM!oEVprE8>M%C1JXt=m3WRIU+D#7COYEFPO@Y z$F8oL_!m7}KGf1RC#_ibt^Wq)<0|MT%l+|BW#~11??uO1XjXTPo3&a-{sQtZMjZ>65W9RVftdwPB`*sgUr0WoHQ znh&eoTeSXn|NUU-*^P8Z9=Xt4YSL`Dd>b)5Y<{{b7o BOvV5J diff --git a/OsmAnd/res/drawable-xxhdpi/map_small_group.png b/OsmAnd/res/drawable-xxhdpi/map_small_group.png deleted file mode 100644 index 7c4b45d02e79044ec63597095e64069b32c799f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1148 zcmbVMTWHfz7>+2zJLpinyu^4x(OjFfO<0{>(`nJptt)H~iaSkC*SIAoCTD9m#fOPF z@xcp??!h{W zn%-+=+i`n(n`R)J1Az`#vR#6vsJi-+3ydy^=^X5|oES5HYlNXKGsd(jX(8< z6)wygf+*7wl@pb4M2&2qB_i`el$QinP&Fl_2@+j-7-G#c^IAr4tk@z_j45F3YCK;o z7P(@GLtZB@s;bHh5-&+C(O~^P2ZIvp_$#XnI`j?Ca`&`IpppSYygVZCxvI-`-`?sM$k$9tR z_bgHr(5)k*$A%70=`n`faHeIF6q$k?jpSK51XWfD$tD|BMTLbX$g828Y=E3n<(Uef z6htMeCz84@g+wtaHz;a@E=S`DDH7I`;dm9Ba(oON16FNY#C8R%{}ZbvJP0uIvIuoo zyP&y%F!Bq?r4xyA)## z>z9);JD1Yq+0u)#=Xd6B5|$i%BYmmaadk95eB(ce(K=n@{iC f|BSHjZJbs^y?uCbSN-q@5d05P$tL}JL&v~xIS_et diff --git a/OsmAnd/res/drawable-xxhdpi/map_start_navigation.png b/OsmAnd/res/drawable-xxhdpi/map_start_navigation.png deleted file mode 100644 index ee62bbac208662342b13bcbf0c3cf6e49328edad..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1936 zcmbVNYg7|w8V;2RM(I)@UU0>6)FPKjW`+ck(Lh5cfviSCfD%E_NoHb3NG48337pop z!`4M`S9H~Nu~3mkS3O17VlPzd+Ox$AxXWr6#UtGa-lQJ66kw+L%y;0>K9eDm(UpCK$WIK7q2VH{i;!BQeE$=E2s z=pt587K$Lt*PNjii9{28bgq@NnwDU8#w8;H7@5!I5!fQpqBNg}u$NFAV53&iZVh<< zlM^67lNvBzX@X529p$7mD_AP0Vrj0uqQtHy!L(Fhkq;9TxG0VQe6CWr7xQVrF};|u z4~XR;Fb3gDG~g4btR^#{V^|7M%90^FqJV)EwG2sy6-p!#Kw%_B4lCtwG6W+Stin(P zc=~{XHI{T>7ToaEmT=O5PLA_na(P)AlZAprq-%iSE|gWTS^ z;~H?vYiDT>M>B39ppmdKYdH-lc={v+m&as!rr7O$nkXS}N`yq!hz$~=RY8iR zBoea0Dg;866sn>WDgv>Q;8Q;N|7K7wI3*9X%TL;8TqN{lVEb$sgu}COqTIp^vBI$M zk&FGp47M0?ZLaU~SMMx#Mrx;@irxRZ8B4 z;O5*ZuFCvhG-&doaIGAS(L6X1$`|8VeN7Ef_~6Fs_R)+~xNdJx?;m@5&iy?kE&Y7` zoMEbAg=1#Nb@nsE?W#iYtF=;6yiEIQ?S)IBm-(R$d&Nu4Q;!92c1@1|opj~2OQIbG z+RqV*t#h|@h*7**DgMVoZM}3T1>N1|FPExH#nFp+ ze1!jts5kESmw*Y*s!y!@cXkv(TY2Xe>??np?&WE%FN76f zGqej|Iao8W>y`Ll@dnK{V}{qo0)fzmM@aKIs7Y)+bTZubccE_y9nX`V<0r9D*?u>rxk*&e?iCfOso_S#?uX^_~ z|E3KU-+y$kYjXS_&JRW#&&<~W!P#|S(_bD3#kA@Ys@k+o?GKOcOXno)E&))GGY1o| z{d!_fnWAQddDs|vEn^_ARNolU8dLgpc31RabP0dtv(e1o=*=~=2Yzqlw|Y!OxFWH0 zUSI1wlI%y?J8$>sLh94k#N$VSytuGK+F1PI_T{jdcxj$C<0LPdwCCQJv!b+ZInl+Hjtd8X&^uSd>|HkG z77U#}B(SE3Z`~ihOgrmX_LS9$k;Ctc+Jh0RD{f8=hj`DW9N4###kTHZ`td>phqBochrb1-}PXjXC2i3`0vT7A9i zUj6#l-@Dl+=kNL#`5c(E?*sAt;h7C{haD&0D)dMAtTzgGyhOET3?{Xvce3TRzNJEqt>${?_7;59q?16~&?7#hqK>mrbA0@BfewDw}mb zC?{sar09VKjok49W1zNP3LFBlTW4=vz=b+r#lM!T>pZqCU#B@ zx!Bv^&4!E&($R-*Zh17t?HOHf^PRiUS&8-DtKDfk%j82< z?VDYr$G_cH*kNj1U~GXS68Gmv-8|@|*Idbl=AE7sw(^&+T|IS9cD8PB*rvC>AFYfKbZ6kf4as=-J7Q$g!6s0DO(9y|M(39BsokhOvqS6E3?nVq={6WEz$W^{L< zX|ZY}##$s1O{z^F8ZBCIgH1tet=303N|sR5N+oHnt(5wxRb#BCrFVfve;6m3d+)h( zzVrIdnZ^~xOVTE#PtxghY3@Qt3ET@4Z|VfNuDaQ=1a31mr&n7k`?V0K0G&;ceE@L> zxJpn0I3ZFS19>{#_>H2+t9gr-vAi76a|s=NI1q$roi1;2ILPtUKtp_>Qk1OdU&l_M zh$vXmGGh@@6tsgXv9L}7E9;6qd|frq2C-6WZk=L-cs+EApVLVk^^+bXI zF9E8&R^cHZ{;VVz*6!Jk5{fVycDW)#Qn(t2%&!dqNpm}_DEy)qM1iG^g5dL+Oc-S{ z(HKL}48|}5g_!^ejJ%HqexH!E^E5nVp>1XdLpv=Fk|dq9g|rzg#sb=9qs(T9fkIi%(!Xd21d z0Tgi^5L}8JK!)qgicg8bPYM=`+0S8|g*RdhNBc02rzy-#8wrLKNP+QF=qO%zqJATN z3U6Q@!DKkB&qQ$~Z!uy5W8g571hAxxk;42O1udC4VCKvy4nxEft@A`HC9hzACXQo+ z0fn*A0ur1j1rE-qnNG7#m%_RoHc$Ac8<%e`uyZd>xIO!B+Q1@-}7BjsA>nd6ma*9ZetTk6)Gz_?euY=QCSE#_bLH&!N-S zr#g_7>6@L2Wkf!mygcx7YhQcgi;WxSe82G5+ACkq*jJKstl`ZA^J2TN@36-4X#3Km z!GZ@C_eb&amJ6kwQrqV=+tVtzx)x)rt38N%`?K_i^SkS%tZ|Ix_HX91%L;!WO}l=+ zc4B=;=FCSYFV*IKd@cI=`|Zevj@8c(O#i!;yl~}WMibN1B6tR4OUs)M^_sVI?XDX~ zP3&vgnr)rh5Gg1Rb{}*R`)6o~+AuqIxL2LpwEKGblpk;HsQq@=%+q%JfFef{os|n{1cC{Q?b+R_= z3w~=^T1EHaoB93?kD5Ds)p?B;ZjI%Ik~ zH?mW6KO9Ou_ufT}Id!!1>!Bm(hweuQ;EPK;0hDb zFqnww=wRZaF`AgDlQF@-hPt?zh%)HJpfN5EOuim>Xd+>-N#E!H_xpdp8>1sb?QLCc z6h*b?hV=rOhoirxnT+G#Uks6{6Aw({F=XKi@FA5pQ3=vH2TZ{N1m^tJ4cJRjjdON! z5>MvOYX)*+Ad-oNjz`cG)!P?(z?gxUF2O0=O))=Sy=G|JOfeI3p3i$(IBgFv_;74t zq-ZS67^=ziouhk0jSx5x13GldZlHxJrpl|4b#%-zbX5e;q?lc!CiA0o7Wt5tV+q#a z1&LPFm>?$Shi&B25hEy}S)5{srMoUTUOvA^>;|b%G&ZIMn+nMyC-* z!8G#dY_^(p`qYH&ny3<-j?%R2wGMrI4w{2La_DNDHG3Z$5^>7e@;sn+V)aHwf`ks@RDuxb0zPyfT0w~ya+t~b9dk&B)8Jx7-U v^Ll6bU-24E%l9ljA$En$}3bOmHpbjvK)Nch+c-=z=-}dbLHA^ATnn! diff --git a/OsmAnd/res/drawable-xxhdpi/map_zoom_out_night.png b/OsmAnd/res/drawable-xxhdpi/map_zoom_out_night.png deleted file mode 100644 index 7e14714a9c77288b407bcff9116b610fca9473a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1129 zcmbVL&ui0A9FN-=wJ@08^z_IC6_%e(nkKByw&~V_-AdQ#Zu*+MtYJ-Fmb|UmK#<*r ze}Omu0lf?a5vF((5j^>0CyzTQ9(NJ+rER8%v4erU_rC9aKcDaK{pQl*RQ76?VVJ3U z&1})Vmi(DXx~~2>Sftw(Qe7h}*dcuwBBo^H4gz%#uA>%$_Ri)zG{-RG+irV}tTpZ! z7WR0U=HV^?FwC?&v_UEhDEO6~2drxhMji7?MZf!S2E4xc=Yj?xa zZFc?^n2QZc;2{D*?DhP}h>Pri*P!R*T42FIg=`erp;K#(CaB;L0hP~lmMAGe(|JkF zYq~ZIWGV|{L6AjG)D1Ofh%y*`EVUNej?pp~Mz*L_WV?g}h9LC&eZHULakwr>x~>bN zEXXoPHMnTUCotyxXeMPaQDlW~KwRvDgb{Y|7AdmS(_si+&}f_z`_U*-G-W~z13}_N z!Sj;12HFv6p}%gNsU5X<0wlChgttPA*29@e!8CX08%h+ZH^y@4(xSkgiLEUU`J`?Z zS^C1;u5HLp$3h(ka+ahaPL~voD~P(tIZ~luJIKyyqL}iWg;xtoPAyl(s-{#Vsj8H< zvRo>aOJ!NgtFoe|*t#DP=vyeY?NZxAthsP5)~JLC5*)TM?xkJO>|%nWE)GDYGN?MZ zanJQ_+>dT1Wg13pqR`z&_Ckm~Fvzpvp5a3ts#abpSe%*{RZi_Fkj5`+oUUjzawtPt zao7>w{@?rw)F~lpmVcTjy`mkN98X7q3a7(_d^$lP9Tn!8xJSoqziyV=@zM9A(j^9D zn9^p?{GGAiPE0mW4u5TbTO=nRU+y#0;PxZt!q`M@ux6+@Hj%7UygYh3{`$#nuHJum z7dcR diff --git a/OsmAnd/res/drawable/ic_actions_menu.xml b/OsmAnd/res/drawable/ic_actions_menu.xml new file mode 100644 index 0000000000..4658db069c --- /dev/null +++ b/OsmAnd/res/drawable/ic_actions_menu.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + diff --git a/OsmAnd/res/drawable/ic_compass.xml b/OsmAnd/res/drawable/ic_compass.xml new file mode 100644 index 0000000000..03cf8d94db --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass.xml @@ -0,0 +1,13 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_bearing.xml b/OsmAnd/res/drawable/ic_compass_bearing.xml new file mode 100644 index 0000000000..46be57b5d8 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_bearing.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_bearing_white.xml b/OsmAnd/res/drawable/ic_compass_bearing_white.xml new file mode 100644 index 0000000000..46be57b5d8 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_bearing_white.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_niu.xml b/OsmAnd/res/drawable/ic_compass_niu.xml new file mode 100644 index 0000000000..90bb87a71b --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_niu.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_niu_white.xml b/OsmAnd/res/drawable/ic_compass_niu_white.xml new file mode 100644 index 0000000000..4e75ed5fa0 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_niu_white.xml @@ -0,0 +1,12 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_compass_white.xml b/OsmAnd/res/drawable/ic_compass_white.xml new file mode 100644 index 0000000000..db5bdd12d6 --- /dev/null +++ b/OsmAnd/res/drawable/ic_compass_white.xml @@ -0,0 +1,13 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_dashboard_dark.xml b/OsmAnd/res/drawable/ic_dashboard.xml similarity index 93% rename from OsmAnd/res/drawable/ic_dashboard_dark.xml rename to OsmAnd/res/drawable/ic_dashboard.xml index 7b95603a20..3c225990ad 100644 --- a/OsmAnd/res/drawable/ic_dashboard_dark.xml +++ b/OsmAnd/res/drawable/ic_dashboard.xml @@ -5,6 +5,6 @@ android:viewportHeight="24"> diff --git a/OsmAnd/res/drawable/map_my_location.xml b/OsmAnd/res/drawable/ic_my_location.xml similarity index 100% rename from OsmAnd/res/drawable/map_my_location.xml rename to OsmAnd/res/drawable/ic_my_location.xml diff --git a/OsmAnd/res/drawable/map_quick_action.xml b/OsmAnd/res/drawable/ic_quick_action.xml similarity index 100% rename from OsmAnd/res/drawable/map_quick_action.xml rename to OsmAnd/res/drawable/ic_quick_action.xml diff --git a/OsmAnd/res/drawable/map_zoom_in.xml b/OsmAnd/res/drawable/ic_zoom_in.xml similarity index 88% rename from OsmAnd/res/drawable/map_zoom_in.xml rename to OsmAnd/res/drawable/ic_zoom_in.xml index 6b6cbf883d..2d130aad07 100644 --- a/OsmAnd/res/drawable/map_zoom_in.xml +++ b/OsmAnd/res/drawable/ic_zoom_in.xml @@ -5,5 +5,5 @@ android:viewportHeight="24"> + android:fillColor="#ffffff"/> diff --git a/OsmAnd/res/drawable/map_zoom_out.xml b/OsmAnd/res/drawable/ic_zoom_out.xml similarity index 87% rename from OsmAnd/res/drawable/map_zoom_out.xml rename to OsmAnd/res/drawable/ic_zoom_out.xml index 89851264ff..530679803b 100644 --- a/OsmAnd/res/drawable/map_zoom_out.xml +++ b/OsmAnd/res/drawable/ic_zoom_out.xml @@ -5,5 +5,5 @@ android:viewportHeight="24"> + android:fillColor="#ffffff"/> diff --git a/OsmAnd/res/layout/dashboard_toolbar.xml b/OsmAnd/res/layout/dashboard_toolbar.xml index 361dfc190f..c32dc2b2a8 100644 --- a/OsmAnd/res/layout/dashboard_toolbar.xml +++ b/OsmAnd/res/layout/dashboard_toolbar.xml @@ -7,6 +7,7 @@ android:layout_width="fill_parent" android:layout_height="@dimen/dashboard_map_toolbar" android:background="@color/app_bar_color_light" + android:padding="0dp" app:contentInsetLeft="0dp" app:contentInsetStart="0dp" app:contentInsetRight="0dp" diff --git a/OsmAnd/res/layout/favourite_list_item.xml b/OsmAnd/res/layout/favourite_list_item.xml index 2ac6957e86..d043a34629 100644 --- a/OsmAnd/res/layout/favourite_list_item.xml +++ b/OsmAnd/res/layout/favourite_list_item.xml @@ -20,7 +20,7 @@ android:layout_gravity="center_vertical" android:layout_marginEnd="@dimen/list_content_padding" android:layout_marginRight="@dimen/list_content_padding" - osmand:srcCompat="@drawable/map_favorite" /> + osmand:srcCompat="@drawable/ic_action_favorite" /> + tools:src="@drawable/ic_action_gdirections_dark"/> diff --git a/OsmAnd/res/layout/maps_in_category_fragment.xml b/OsmAnd/res/layout/maps_in_category_fragment.xml index 624e3a917e..072dd0902c 100644 --- a/OsmAnd/res/layout/maps_in_category_fragment.xml +++ b/OsmAnd/res/layout/maps_in_category_fragment.xml @@ -11,11 +11,12 @@ diff --git a/OsmAnd/res/layout/mode_view_route_preparation.xml b/OsmAnd/res/layout/mode_view_route_preparation.xml index 9b5883b264..c8e171984c 100644 --- a/OsmAnd/res/layout/mode_view_route_preparation.xml +++ b/OsmAnd/res/layout/mode_view_route_preparation.xml @@ -9,7 +9,7 @@ android:layout_width="@dimen/standard_icon_size" android:layout_height="@dimen/standard_icon_size" android:layout_gravity="center" - tools:src="@drawable/ic_dashboard_dark" /> + tools:src="@drawable/ic_dashboard" /> diff --git a/OsmAnd/res/values/colors.xml b/OsmAnd/res/values/colors.xml index 59415b1a6a..6a8b9adbbf 100644 --- a/OsmAnd/res/values/colors.xml +++ b/OsmAnd/res/values/colors.xml @@ -128,6 +128,8 @@ #e5e5e5 #536dfe #485dd9 + #727272 + #cccccc #f0f0f0 #1b1d1f diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index 914b44be07..f3b7030d08 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -375,18 +375,20 @@ public class AndroidUtils { } } - public static void updateImageButton(Context ctx, ImageButton button, int iconLightId, int iconDarkId, int bgLightId, int bgDarkId, boolean night) { + public static void updateImageButton(OsmandApplication ctx, ImageButton button, + @DrawableRes int iconLightId, @DrawableRes int iconDarkId, + @DrawableRes int bgLightId, @DrawableRes int bgDarkId, boolean night) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { button.setBackground(AppCompatResources.getDrawable(ctx, night ? bgDarkId : bgLightId)); } else { button.setBackgroundDrawable(AppCompatResources.getDrawable(ctx, night ? bgDarkId : bgLightId)); } int btnSizePx = button.getLayoutParams().height; - int iconSizePx = (int) button.getContext().getResources().getDimension(R.dimen.map_widget_icon); + int iconSizePx = button.getContext().getResources().getDimensionPixelSize(R.dimen.map_widget_icon); int iconPadding = (btnSizePx - iconSizePx) / 2; button.setPadding(iconPadding, iconPadding, iconPadding, iconPadding); button.setScaleType(ImageView.ScaleType.FIT_CENTER); - button.setImageDrawable(AppCompatResources.getDrawable(ctx, night ? iconDarkId : iconLightId)); + button.setImageDrawable(ctx.getUIUtilities().getMapIcon(night ? iconDarkId : iconLightId, !night)); } public static void setDashButtonBackground(Context ctx, View view, boolean night) { diff --git a/OsmAnd/src/net/osmand/plus/UiUtilities.java b/OsmAnd/src/net/osmand/plus/UiUtilities.java index 9f16bbc9a0..0a168ffec9 100644 --- a/OsmAnd/src/net/osmand/plus/UiUtilities.java +++ b/OsmAnd/src/net/osmand/plus/UiUtilities.java @@ -144,7 +144,7 @@ public class UiUtilities { } public Drawable getMapIcon(@DrawableRes int id, boolean light) { - return getDrawable(id, light ? R.color.icon_color_default_light : 0); + return getDrawable(id, light ? R.color.map_button_icon_color_light : R.color.map_button_icon_color_dark); } public static Drawable getSelectableDrawable(Context ctx) { diff --git a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java index c5ad4ec536..a23815a903 100644 --- a/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java +++ b/OsmAnd/src/net/osmand/plus/activities/MapActivityActions.java @@ -368,7 +368,7 @@ public class MapActivityActions implements DialogProvider { adapter.addItem(itemBuilder .setTitleId(R.string.shared_string_actions, mapActivity) .setId(MAP_CONTEXT_MENU_MORE_ID) - .setIcon(R.drawable.map_overflow_menu_white) + .setIcon(R.drawable.ic_actions_menu) .setOrder(40) .createItem()); @@ -776,7 +776,7 @@ public class MapActivityActions implements DialogProvider { optionsMenuHelper.addItem(new ItemBuilder().setTitleId(R.string.home, mapActivity) .setId(DRAWER_DASHBOARD_ID) - .setIcon(R.drawable.map_dashboard) + .setIcon(R.drawable.ic_dashboard) .setListener(new ItemClickListener() { @Override public boolean onContextMenuClick(ArrayAdapter adapter, int itemId, int pos, boolean isChecked, int[] viewCoordinates) { diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java index 9a4f3cf0d5..b52e495dd3 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashboardOnMap.java @@ -415,7 +415,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, IRouteInfo DashboardActionButton myLocationButton = new DashboardActionButton(); - myLocationButton.icon = AppCompatResources.getDrawable(mapActivity, R.drawable.map_my_location); + myLocationButton.icon = AppCompatResources.getDrawable(mapActivity, R.drawable.ic_my_location); myLocationButton.text = mapActivity.getString(R.string.map_widget_back_to_loc); myLocationButton.onClickListener = new View.OnClickListener() { @Override @@ -430,7 +430,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, IRouteInfo }; DashboardActionButton navigateButton = new DashboardActionButton(); - navigateButton.icon = AppCompatResources.getDrawable(mapActivity, R.drawable.map_start_navigation); + navigateButton.icon = AppCompatResources.getDrawable(mapActivity, R.drawable.ic_action_start_navigation); navigateButton.text = mapActivity.getString(R.string.follow); navigateButton.onClickListener = new View.OnClickListener() { @Override @@ -441,7 +441,7 @@ public class DashboardOnMap implements ObservableScrollViewCallbacks, IRouteInfo }; DashboardActionButton routeButton = new DashboardActionButton(); - routeButton.icon = AppCompatResources.getDrawable(mapActivity, R.drawable.map_directions); + routeButton.icon = AppCompatResources.getDrawable(mapActivity, R.drawable.ic_action_gdirections_dark); routeButton.text = mapActivity.getString(R.string.layer_route); routeButton.onClickListener = new View.OnClickListener() { @Override diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java index 64f18db5e5..e28559d055 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenu.java @@ -914,7 +914,7 @@ public class MapContextMenu extends MenuTitleController implements StateChangedL } public int getFabIconId() { - int res = R.drawable.map_directions; + int res = R.drawable.ic_action_gdirections_dark; MapActivity mapActivity = getMapActivity(); if (mapActivity != null) { RoutingHelper routingHelper = mapActivity.getMyApplication().getRoutingHelper(); diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java index 8559982176..2fda1e16fb 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/MapContextMenuFragment.java @@ -513,9 +513,9 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo zoomInButtonView = (ImageButton) view.findViewById(R.id.context_menu_zoom_in_button); zoomOutButtonView = (ImageButton) view.findViewById(R.id.context_menu_zoom_out_button); if (menu.zoomButtonsVisible()) { - AndroidUtils.updateImageButton(mapActivity, zoomInButtonView, R.drawable.map_zoom_in, R.drawable.map_zoom_in_night, + AndroidUtils.updateImageButton(app, zoomInButtonView, R.drawable.ic_zoom_in, R.drawable.ic_zoom_in, R.drawable.btn_circle_trans, R.drawable.btn_circle_night, nightMode); - AndroidUtils.updateImageButton(mapActivity, zoomOutButtonView, R.drawable.map_zoom_out, R.drawable.map_zoom_out_night, + AndroidUtils.updateImageButton(app, zoomOutButtonView, R.drawable.ic_zoom_out, R.drawable.ic_zoom_out, R.drawable.btn_circle_trans, R.drawable.btn_circle_night, nightMode); zoomInButtonView.setOnClickListener(new View.OnClickListener() { @Override @@ -622,7 +622,7 @@ public class MapContextMenuFragment extends BaseOsmAndFragment implements Downlo } }); TextView directionsButton = (TextView) view.findViewById(R.id.context_menu_directions_button); - int iconResId = R.drawable.map_directions; + int iconResId = R.drawable.ic_action_gdirections_dark; if (menu.navigateInPedestrianMode()) { iconResId = R.drawable.ic_action_pedestrian_dark; } diff --git a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectCategoryDialogFragment.java b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectCategoryDialogFragment.java index 4158b39fdb..8875949d3f 100644 --- a/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectCategoryDialogFragment.java +++ b/OsmAnd/src/net/osmand/plus/mapcontextmenu/editors/SelectCategoryDialogFragment.java @@ -2,7 +2,6 @@ package net.osmand.plus.mapcontextmenu.editors; import android.app.Activity; import android.app.Dialog; -import android.graphics.Color; import android.graphics.PorterDuff; import android.graphics.drawable.Drawable; import android.os.Bundle; @@ -99,7 +98,7 @@ public class SelectCategoryDialogFragment extends DialogFragment { } View itemView = UiUtilities.getInflater(activity, nightMode).inflate(R.layout.favorite_category_dialog_item, null); Button button = (Button)itemView.findViewById(R.id.button); - button.setCompoundDrawablesWithIntrinsicBounds(getIcon(activity, R.drawable.map_zoom_in), null, null, null); + button.setCompoundDrawablesWithIntrinsicBounds(getIcon(activity, R.drawable.ic_zoom_in), null, null, null); button.setCompoundDrawablePadding(AndroidUtils.dpToPx(activity,15f)); button.setText(activity.getResources().getText(R.string.favorite_category_add_new)); button.setOnClickListener(new View.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java index 237eb3fc7a..7793c85e29 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/AvailableGPXFragment.java @@ -784,7 +784,7 @@ public class AvailableGPXFragment extends OsmandExpandableListFragment implement i++; } menuAdapter.addItem(itemBuilder.setTitleId(R.string.add_new_folder, app) - .setIcon(R.drawable.map_zoom_in).setTag(-1).createItem()); + .setIcon(R.drawable.ic_zoom_in).setTag(-1).createItem()); final AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final ArrayAdapter listAdapter = menuAdapter.createListAdapter(getActivity(), app.getSettings().isLightContent()); diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/ChooseRouteFragment.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/ChooseRouteFragment.java index 692ffa5991..1d925023bb 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/ChooseRouteFragment.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/ChooseRouteFragment.java @@ -352,9 +352,9 @@ public class ChooseRouteFragment extends BaseOsmAndFragment implements ContextMe ImageButton zoomOutButtonView = (ImageButton) view.findViewById(R.id.map_zoom_out_button); ImageButton myLocButtonView = (ImageButton) view.findViewById(R.id.map_my_location_button); this.myLocButtonView = myLocButtonView; - AndroidUtils.updateImageButton(app, zoomInButtonView, R.drawable.map_zoom_in, R.drawable.map_zoom_in_night, + AndroidUtils.updateImageButton(app, zoomInButtonView, R.drawable.ic_zoom_in, R.drawable.ic_zoom_in, R.drawable.btn_circle_trans, R.drawable.btn_circle_night, nightMode); - AndroidUtils.updateImageButton(app, zoomOutButtonView, R.drawable.map_zoom_out, R.drawable.map_zoom_out_night, + AndroidUtils.updateImageButton(app, zoomOutButtonView, R.drawable.ic_zoom_out, R.drawable.ic_zoom_out, R.drawable.btn_circle_trans, R.drawable.btn_circle_night, nightMode); zoomInButtonView.setOnClickListener(new OnClickListener() { @Override @@ -402,14 +402,14 @@ public class ChooseRouteFragment extends BaseOsmAndFragment implements ContextMe ImageButton myLocButtonView = this.myLocButtonView; if (myLocButtonView != null) { if (!enabled) { - myLocButtonView.setImageDrawable(getIcon(R.drawable.map_my_location, R.color.icon_color_default_light)); + myLocButtonView.setImageDrawable(getIcon(R.drawable.ic_my_location, R.color.icon_color_default_light)); AndroidUtils.setBackground(app, myLocButtonView, nightMode, R.drawable.btn_circle, R.drawable.btn_circle_night); myLocButtonView.setContentDescription(mapActivity.getString(R.string.unknown_location)); } else if (tracked) { - myLocButtonView.setImageDrawable(getIcon(R.drawable.map_my_location, R.color.color_myloc_distance)); + myLocButtonView.setImageDrawable(getIcon(R.drawable.ic_my_location, R.color.color_myloc_distance)); AndroidUtils.setBackground(app, myLocButtonView, nightMode, R.drawable.btn_circle, R.drawable.btn_circle_night); } else { - myLocButtonView.setImageResource(R.drawable.map_my_location); + myLocButtonView.setImageResource(R.drawable.ic_my_location); AndroidUtils.setBackground(app, myLocButtonView, nightMode, R.drawable.btn_circle_blue, R.drawable.btn_circle_blue); myLocButtonView.setContentDescription(mapActivity.getString(R.string.map_widget_back_to_loc)); } diff --git a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java index 12c3a5b5d2..73d1573858 100644 --- a/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java +++ b/OsmAnd/src/net/osmand/plus/routepreparationmenu/MapRouteInfoMenu.java @@ -2299,7 +2299,7 @@ public class MapRouteInfoMenu implements IRouteInformationListener, CardListener case ROUTE_INFO: return 0; case ROUTE_DETAILS: - return app != null ? app.getRoutingHelper().getAppMode().getIconRes() : R.drawable.map_directions; + return app != null ? app.getRoutingHelper().getAppMode().getIconRes() : R.drawable.ic_action_gdirections_dark; default: return 0; } diff --git a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportedSettingsItemsAdapter.java b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportedSettingsItemsAdapter.java index 996716c4af..270391c619 100644 --- a/OsmAnd/src/net/osmand/plus/settings/fragments/ImportedSettingsItemsAdapter.java +++ b/OsmAnd/src/net/osmand/plus/settings/fragments/ImportedSettingsItemsAdapter.java @@ -83,7 +83,7 @@ public class ImportedSettingsItemsAdapter extends holder.title.setText(R.string.shared_string_settings); break; case QUICK_ACTIONS: - holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.map_quick_action, activeColorRes)); + holder.icon.setImageDrawable(uiUtils.getIcon(R.drawable.ic_quick_action, activeColorRes)); holder.title.setText(R.string.configure_screen_quick_action); break; case POI_TYPES: diff --git a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java index b79f36ab57..c308dce187 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapControlsLayer.java @@ -273,7 +273,7 @@ public class MapControlsLayer extends OsmandMapLayer { }); View compass = mapActivity.findViewById(R.id.map_compass_button); - compassHud = createHudButton(compass, R.drawable.map_compass, COMPASS_HUD_ID).setIconColorId(0). + compassHud = createHudButton(compass, R.drawable.ic_compass, COMPASS_HUD_ID).setIconColorId(0). setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night); compassHud.compass = true; controls.add(compassHud); @@ -299,6 +299,7 @@ public class MapControlsLayer extends OsmandMapLayer { View search = mapActivity.findViewById(R.id.map_search_button); quickSearchHud = createHudButton(search, R.drawable.ic_action_search_dark, QUICK_SEARCH_HUD_ID) + .setIconColorId(R.color.map_button_icon_color_light, R.color.map_button_icon_color_dark) .setBg(R.drawable.btn_inset_circle_trans, R.drawable.btn_inset_circle_night); controls.add(quickSearchHud); search.setOnClickListener(new View.OnClickListener() { @@ -353,7 +354,8 @@ public class MapControlsLayer extends OsmandMapLayer { private void initControls() { View backToLocation = mapActivity.findViewById(R.id.map_my_location_button); - backToLocationControl = createHudButton(backToLocation, R.drawable.map_my_location, BACK_TO_LOC_HUD_ID) + backToLocationControl = createHudButton(backToLocation, R.drawable.ic_my_location, BACK_TO_LOC_HUD_ID) + .setIconColorId(R.color.map_button_icon_color_light, R.color.map_button_icon_color_dark) .setBg(R.drawable.btn_circle_blue); controls.add(backToLocationControl); @@ -373,8 +375,9 @@ public class MapControlsLayer extends OsmandMapLayer { final boolean dash = settings.SHOW_DASHBOARD_ON_MAP_SCREEN.get(); menuControl = createHudButton(backToMenuButton, - !dash ? R.drawable.ic_navigation_drawer : R.drawable.ic_dashboard_dark, MENU_HUD_ID).setBg( - R.drawable.btn_round, R.drawable.btn_round_night); + !dash ? R.drawable.ic_navigation_drawer : R.drawable.ic_dashboard, MENU_HUD_ID) + .setIconColorId(R.color.map_button_icon_color_light, R.color.map_button_icon_color_dark) + .setBg(R.drawable.btn_round, R.drawable.btn_round_night); controls.add(menuControl); backToMenuButton.setOnClickListener(new View.OnClickListener() { @Override @@ -390,8 +393,9 @@ public class MapControlsLayer extends OsmandMapLayer { zoomText = (TextView) mapActivity.findViewById(R.id.map_app_mode_text); View routePlanButton = mapActivity.findViewById(R.id.map_route_info_button); - routePlanningBtn = createHudButton(routePlanButton, R.drawable.ic_action_gdirections_dark, ROUTE_PLANNING_HUD_ID).setBg( - R.drawable.btn_round, R.drawable.btn_round_night); + routePlanningBtn = createHudButton(routePlanButton, R.drawable.ic_action_gdirections_dark, ROUTE_PLANNING_HUD_ID) + .setIconColorId(R.color.map_button_icon_color_light, R.color.map_button_icon_color_dark) + .setBg(R.drawable.btn_round, R.drawable.btn_round_night); controls.add(routePlanningBtn); routePlanButton.setOnClickListener(new View.OnClickListener() { @Override @@ -584,7 +588,7 @@ public class MapControlsLayer extends OsmandMapLayer { private void initZooms() { final OsmandMapTileView view = mapActivity.getMapView(); View zoomInButton = mapActivity.findViewById(R.id.map_zoom_in_button); - mapZoomIn = createHudButton(zoomInButton, R.drawable.map_zoom_in, ZOOM_IN_HUD_ID).setRoundTransparent(); + mapZoomIn = createHudButton(zoomInButton, R.drawable.ic_zoom_in, ZOOM_IN_HUD_ID).setRoundTransparent(); controls.add(mapZoomIn); zoomInButton.setOnClickListener(new View.OnClickListener() { @Override @@ -603,7 +607,7 @@ public class MapControlsLayer extends OsmandMapLayer { final View.OnLongClickListener listener = MapControlsLayer.getOnClickMagnifierListener(view); zoomInButton.setOnLongClickListener(listener); View zoomOutButton = mapActivity.findViewById(R.id.map_zoom_out_button); - mapZoomOut = createHudButton(zoomOutButton, R.drawable.map_zoom_out, ZOOM_OUT_HUD_ID).setRoundTransparent(); + mapZoomOut = createHudButton(zoomOutButton, R.drawable.ic_zoom_out, ZOOM_OUT_HUD_ID).setRoundTransparent(); controls.add(mapZoomOut); zoomOutButton.setOnClickListener(new View.OnClickListener() { @Override @@ -787,19 +791,19 @@ public class MapControlsLayer extends OsmandMapLayer { updateMyLocation(rh, routeDialogOpened || trackDialogOpened || contextMenuOpened); boolean showButtons = (showRouteCalculationControls || !routeFollowingMode) && !isInMovingMarkerMode() && !isInGpxDetailsMode() && !isInMeasurementToolMode() && !isInPlanRouteMode() && !contextMenuOpened && !isInChoosingRoutesMode() && !isInWaypointsChoosingMode(); - //routePlanningBtn.setIconResId(routeFollowingMode ? R.drawable.ic_action_info_dark : R.drawable.map_directions); + //routePlanningBtn.setIconResId(routeFollowingMode ? R.drawable.ic_action_info_dark : R.drawable.ic_action_gdirections_dark); int routePlanningBtnImage = mapRouteInfoMenu.getRoutePlanningBtnImage(); if (routePlanningBtnImage != 0) { routePlanningBtn.setIconResId(routePlanningBtnImage); routePlanningBtn.setIconColorId(R.color.color_myloc_distance); } else if (rh.isFollowingMode()) { - routePlanningBtn.setIconResId(R.drawable.map_start_navigation); + routePlanningBtn.setIconResId(R.drawable.ic_action_start_navigation); routePlanningBtn.setIconColorId(R.color.color_myloc_distance); } else if (routePlanningMode) { - routePlanningBtn.setIconResId(R.drawable.map_directions); + routePlanningBtn.setIconResId(R.drawable.ic_action_gdirections_dark); routePlanningBtn.setIconColorId(R.color.color_myloc_distance); } else { - routePlanningBtn.setIconResId(R.drawable.map_directions); + routePlanningBtn.setIconResId(R.drawable.ic_action_gdirections_dark); routePlanningBtn.resetIconColors(); } routePlanningBtn.updateVisibility(showButtons); @@ -854,15 +858,15 @@ public class MapControlsLayer extends OsmandMapLayer { compassHud.updateVisibility(showCompass); } if (settings.ROTATE_MAP.get() == OsmandSettings.ROTATE_MAP_NONE) { - compassHud.setIconResId(isNight ? R.drawable.map_compass_niu_white : R.drawable.map_compass_niu); + compassHud.setIconResId(isNight ? R.drawable.ic_compass_niu_white : R.drawable.ic_compass_niu); compassHud.iv.setContentDescription(mapActivity.getString(R.string.rotate_map_none_opt)); compassHud.updateVisibility(showCompass); } else if (settings.ROTATE_MAP.get() == OsmandSettings.ROTATE_MAP_BEARING) { - compassHud.setIconResId(isNight ? R.drawable.map_compass_bearing_white : R.drawable.map_compass_bearing); + compassHud.setIconResId(isNight ? R.drawable.ic_compass_bearing_white : R.drawable.ic_compass_bearing); compassHud.iv.setContentDescription(mapActivity.getString(R.string.rotate_map_bearing_opt)); compassHud.updateVisibility(true); } else { - compassHud.setIconResId(isNight ? R.drawable.map_compass_white : R.drawable.map_compass); + compassHud.setIconResId(isNight ? R.drawable.ic_compass_white : R.drawable.ic_compass); compassHud.iv.setContentDescription(mapActivity.getString(R.string.rotate_map_compass_opt)); compassHud.updateVisibility(true); } @@ -887,7 +891,7 @@ public class MapControlsLayer extends OsmandMapLayer { if (!enabled) { backToLocationControl.setBg(R.drawable.btn_circle, R.drawable.btn_circle_night); - backToLocationControl.setIconColorId(R.color.icon_color_default_light, 0); + backToLocationControl.setIconColorId(R.color.map_button_icon_color_light, R.color.map_button_icon_color_dark); backToLocationControl.iv.setContentDescription(mapActivity.getString(R.string.unknown_location)); } else if (tracked) { backToLocationControl.setBg(R.drawable.btn_circle, R.drawable.btn_circle_night); @@ -983,8 +987,8 @@ public class MapControlsLayer extends OsmandMapLayer { int resId; int resLightId; int resDarkId; - int resClrLight = R.color.icon_color_default_light; - int resClrDark = 0; + int resClrLight = R.color.map_button_icon_color_light; + int resClrDark = R.color.map_button_icon_color_dark; String id; boolean nightMode = false; @@ -1093,11 +1097,11 @@ public class MapControlsLayer extends OsmandMapLayer { } public boolean resetIconColors() { - if (resClrLight == R.color.icon_color_default_light && resClrDark == 0) { + if (resClrLight == R.color.map_button_icon_color_light && resClrDark == R.color.map_button_icon_color_dark) { return false; } - resClrLight = R.color.icon_color_default_light; - resClrDark = 0; + resClrLight = R.color.map_button_icon_color_light; + resClrDark = R.color.map_button_icon_color_dark; f = true; return true; } @@ -1157,14 +1161,9 @@ public class MapControlsLayer extends OsmandMapLayer { } if (iv instanceof ImageView) { if (compass) { - ((ImageView) iv).setImageDrawable(new CompassDrawable(d)); + setMapButtonIcon((ImageView) iv, new CompassDrawable(d)); } else { - int btnSizePx = (iv).getLayoutParams().height; - int iconSizePx = (int) ctx.getResources().getDimension(R.dimen.map_widget_icon); - int iconPadding = (btnSizePx - iconSizePx) / 2; - iv.setPadding(iconPadding, iconPadding, iconPadding, iconPadding); - ((ImageView) iv).setScaleType(ImageView.ScaleType.FIT_CENTER); - ((ImageView) iv).setImageDrawable(d); + setMapButtonIcon((ImageView) iv, d); } } else if (iv instanceof TextView) { ((TextView) iv).setCompoundDrawablesWithIntrinsicBounds( diff --git a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java index aa1c4506af..a961ea1611 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java @@ -2,6 +2,7 @@ package net.osmand.plus.views; import android.graphics.Canvas; +import android.graphics.drawable.Drawable; import android.view.View; import android.view.View.OnClickListener; import android.widget.ImageButton; @@ -237,8 +238,9 @@ public class MapInfoLayer extends OsmandMapLayer { expand.setVisibility(mapInfoControls.hasCollapsibles(settings.getApplicationMode())? View.VISIBLE : View.GONE); - this.expand.setImageResource(expanded ? R.drawable.map_up : - R.drawable.map_down); + Drawable expandIcon = map.getMyApplication().getUIUtilities().getMapIcon(expanded ? R.drawable.ic_action_arrow_up : + R.drawable.ic_action_arrow_down, true); + setMapButtonIcon(expand, expandIcon); expand.setContentDescription(map.getString(expanded ? R.string.shared_string_collapse : R.string.access_widget_expand)); expand.setOnClickListener(new OnClickListener() { @@ -289,7 +291,9 @@ public class MapInfoLayer extends OsmandMapLayer { updateTopToolbar(nightMode); lanesControl.updateTextSize(nightMode, ts.textColor, ts.textShadowColor, ts.textBold, ts.textShadowRadius / 2); rulerControl.updateTextSize(nightMode, ts.textColor, ts.textShadowColor, (int) (2 * view.getDensity())); + int padding = this.expand.getPaddingLeft(); this.expand.setBackgroundResource(ts.expand); + this.expand.setPadding(padding, padding, padding, padding); rightStack.invalidate(); leftStack.invalidate(); } diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index 33344bcf3a..30c1348235 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -283,15 +283,9 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe } private void updateQuickActionButton(boolean widgetVisible) { - quickActionButton.setBackgroundResource( - nightMode ? R.drawable.btn_circle_night : R.drawable.btn_circle_trans); - int btnSizePx = quickActionButton.getLayoutParams().height; - int iconSizePx = (int) quickActionButton.getContext().getResources().getDimension(R.dimen.map_widget_icon); - int iconPadding = (btnSizePx - iconSizePx) / 2; - quickActionButton.setPadding(iconPadding, iconPadding, iconPadding, iconPadding); - quickActionButton.setScaleType(ImageView.ScaleType.FIT_CENTER); - quickActionButton.setImageDrawable(app.getUIUtilities().getMapIcon( - !widgetVisible ? R.drawable.map_quick_action : R.drawable.ic_action_close, !nightMode)); + quickActionButton.setBackgroundResource(nightMode ? R.drawable.btn_circle_night : R.drawable.btn_circle_trans); + setMapButtonIcon(quickActionButton, app.getUIUtilities().getMapIcon( + !widgetVisible ? R.drawable.ic_quick_action : R.drawable.ic_action_close, !nightMode)); quickActionButton.setContentDescription(mapActivity.getString(!widgetVisible ? R.string.configure_screen_quick_action : R.string.shared_string_cancel)); } diff --git a/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java b/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java index 0e154d098f..45f5541d29 100644 --- a/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/OsmandMapLayer.java @@ -20,6 +20,7 @@ import android.graphics.drawable.Drawable; import android.os.AsyncTask; import android.util.Pair; import android.view.MotionEvent; +import android.widget.ImageView; import androidx.annotation.NonNull; import androidx.core.graphics.ColorUtils; @@ -645,6 +646,15 @@ public abstract class OsmandMapLayer { return (int) textScale * radiusPoi; } + public void setMapButtonIcon(ImageView imageView, Drawable icon) { + int btnSizePx = imageView.getLayoutParams().height; + int iconSizePx = imageView.getContext().getResources().getDimensionPixelSize(R.dimen.map_widget_icon); + int iconPadding = (btnSizePx - iconSizePx) / 2; + imageView.setPadding(iconPadding, iconPadding, iconPadding, iconPadding); + imageView.setScaleType(ImageView.ScaleType.FIT_CENTER); + imageView.setImageDrawable(icon); + } + public abstract class MapLayerData { public int ZOOM_THRESHOLD = 1; public RotatedTileBox queriedBox; diff --git a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java index 2124c17b75..b1b18862d4 100644 --- a/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java +++ b/OsmAnd/src/net/osmand/plus/views/mapwidgets/MapWidgetRegistry.java @@ -455,7 +455,7 @@ public class MapWidgetRegistry { boolean selected = app.getQuickActionRegistry().isQuickActionOn(); contextMenuAdapter.addItem(new ContextMenuItem.ItemBuilder() .setTitleId(R.string.configure_screen_quick_action, mapActivity) - .setIcon(R.drawable.map_quick_action) + .setIcon(R.drawable.ic_quick_action) .setSelected(selected) .setColor(selected ? R.color.osmand_orange : ContextMenuItem.INVALID_ID) .setSecondaryIcon( R.drawable.ic_action_additional_option) From 4fff6ac766b4048babf3aecd7fb169cedeeb0cdd Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Mon, 25 May 2020 19:50:18 +0300 Subject: [PATCH 081/108] Fix formatting --- OsmAnd/res/layout/fragment_map_markers_dialog.xml | 4 ++-- OsmAnd/res/layout/search_dialog_fragment.xml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/res/layout/fragment_map_markers_dialog.xml b/OsmAnd/res/layout/fragment_map_markers_dialog.xml index b0c1c100dc..c95935198c 100644 --- a/OsmAnd/res/layout/fragment_map_markers_dialog.xml +++ b/OsmAnd/res/layout/fragment_map_markers_dialog.xml @@ -27,7 +27,7 @@ android:layout_width="match_parent" android:layout_height="match_parent" android:minHeight="@dimen/dashboard_map_toolbar" - android:padding="0dp" + android:padding="0dp" app:contentInsetLeft="54dp" app:contentInsetStart="54dp" app:contentInsetRight="0dp" @@ -94,7 +94,7 @@ android:layout_height="wrap_content" android:background="?attr/bg_color" app:itemBackground="?attr/bg_color" - app:labelVisibilityMode="labeled" + app:labelVisibilityMode="labeled" app:itemIconTint="@color/bottom_navigation_color_selector_light" app:itemTextColor="@color/bottom_navigation_color_selector_light" app:menu="@menu/map_markers_bottom_navigation"/> diff --git a/OsmAnd/res/layout/search_dialog_fragment.xml b/OsmAnd/res/layout/search_dialog_fragment.xml index 0af6069c79..964a025182 100644 --- a/OsmAnd/res/layout/search_dialog_fragment.xml +++ b/OsmAnd/res/layout/search_dialog_fragment.xml @@ -39,7 +39,7 @@ android:layout_height="@dimen/dashboard_map_toolbar" android:background="@color/osmand_orange" android:minHeight="@dimen/dashboard_map_toolbar" - android:padding="0dp" + android:padding="0dp" android:theme="?attr/toolbar_theme" android:visibility="gone" app:contentInsetLeft="54dp" From 8c9314de01e8a6c73415a594bfe64261ebc1c94f Mon Sep 17 00:00:00 2001 From: solokot Date: Mon, 25 May 2020 08:34:55 +0000 Subject: [PATCH 082/108] Translated using Weblate (Russian) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-ru/strings.xml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index 7cef175d12..aaba7e07d4 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -3429,9 +3429,9 @@ Для использования этой функции требуется разрешение. Это низкоскоростной фильтр отсечки, чтобы не записывать точки ниже определённой скорости. Это может сделать записанные треки более гладкими при просмотре на карте. Упорядочить категории - Изменяйте порядок сортировки списка, скрывайте ненужные категории. Вы можете импортировать или экспортировать все изменения с профилями. - Вы можете добавить новую пользовательскую категорию, выбрав одну или несколько необходимых категорий. - Сброс к настройкам по умолчанию приведёт к сбросу порядка сортировки к настройкам по умолчанию после установки. + Изменяйте порядок сортировки списка, скрывайте категории. Вы можете импортировать или экспортировать все изменения с профилями. + Вы можете добавить новую пользовательскую категорию, выбрав одну или несколько категорий. + Сброс к настройкам по умолчанию приведёт к возврату порядка сортировки по умолчанию. Добавить пользовательскую категорию Показывать только ночью Все настройки плагина восстановлены до состояния по умолчанию. @@ -3441,8 +3441,8 @@ Восход в %1$s Режим специальных возможностей отключён в системе. Использовать системную блокировку экрана - По умолчанию отключено, если OsmAnd работает на переднем плане, экран не отключается. -\n + По умолчанию отключено: пока OsmAnd работает на переднем плане, экран не отключается. +\n \nЕсли включено, OsmAnd будет использовать системные настройки блокировки экрана. Очистить записанные данные • Профили: теперь вы можете изменить порядок, установить значок для карты, изменить все настройки для базовых профилей и вернуть их к настройкам по умолчанию From 7f491f5e8990c0496dec6fd05f4e5885fb2bf5ad Mon Sep 17 00:00:00 2001 From: Ldm Public Date: Mon, 25 May 2020 11:00:52 +0000 Subject: [PATCH 083/108] Translated using Weblate (French) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-fr/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-fr/strings.xml b/OsmAnd/res/values-fr/strings.xml index 35bee79f82..d527cf7d64 100644 --- a/OsmAnd/res/values-fr/strings.xml +++ b/OsmAnd/res/values-fr/strings.xml @@ -2125,10 +2125,10 @@ Emplacement Ce nom existe déjà, l\'action rapide a été renommée en %1$s. Nom d\'action rapide en double - Afficher / Masquer les favoris + Afficher / masquer les favoris Afficher les favoris Masquer les favoris - Afficher / Masquer les points d\'intérêt + Afficher / masquer les points d\'intérêt Afficher %1$s Masquer %1$s Ajouter une catégorie @@ -2649,7 +2649,7 @@ Copier l\'emplacement / le nom du point Emplacement sans nom Afficher les notes fermées - Afficher / Masquer les notes OSM sur la carte. + Afficher / masquer les notes OSM sur la carte. GPX - adapté à l\'export vers JOSM et d\'autres éditeurs OSM. OSC - adapté à l\'export vers OSM. Fichier GPX @@ -3345,11 +3345,11 @@ Bouton affichant ou masquant les courbes de niveaux sur la carte. Afficher les courbes de niveaux Masquer les courbes de niveaux - Afficher/Masquer les courbes de niveaux + Afficher / masquer les courbes de niveaux Bouton affichant ou masquant l\'ombrage du relief sur la carte. Afficher l\'ombrage du relief Masquer l\'ombrage du relief - Afficher/Masquer l\'ombrage du relief + Afficher / masquer l\'ombrage du relief Impossible de démarrer le moteur de synthèse vocale. Simulez votre position à l\'aide d\'une trace GPX enregistrée. Exporter le profil @@ -3472,9 +3472,9 @@ Modifiez l\'ordre de tri de la liste, masquez des catégories. Vous pouvez importer et exporter toutes vos modifications via les profils. Restaurer les valeurs par défaut réinitialisera l\'ordre de tri. Le mode d\'accessibilité est désactivé dans votre système Android. - Vous pouvez ajouter une catégorie personnelle en sélectionnant la ou les catégories souhaitées. - Utiliser le délai système pour mettre en veille l\'écran - Inactif par défaut (lorsqu\'OsmAnd s’exécute en avant-plan, l\'écran reste toujours allumé). + Vous pouvez ajouter une catégorie personnelle en sélectionnant une ou plusieurs catégories. + Utiliser le délai système de mise en veille de l\'écran + Inactif par défaut : lorsqu\'OsmAnd s’exécute en avant-plan, l\'écran reste toujours allumé. \n \nSi actif, OsmAnd utilisera le délai système pour mettre en veille l\'écran. Effacer les données enregistrées From 8d373da6a4d071fe8bc1815fe52f8934f320e8ac Mon Sep 17 00:00:00 2001 From: Onkar Shinde Date: Mon, 25 May 2020 18:20:45 +0000 Subject: [PATCH 084/108] Translated using Weblate (Marathi) Currently translated at 12.2% (410 of 3341 strings) --- OsmAnd/res/values-mr/strings.xml | 852 +++++++++++++++---------------- 1 file changed, 403 insertions(+), 449 deletions(-) diff --git a/OsmAnd/res/values-mr/strings.xml b/OsmAnd/res/values-mr/strings.xml index a1d76364ab..a7f347d7d4 100644 --- a/OsmAnd/res/values-mr/strings.xml +++ b/OsmAnd/res/values-mr/strings.xml @@ -1,373 +1,334 @@ -डाव्या बाजूने ड्रायव्हिंग - अजून स्थान माहित नाही - पारदर्शकता बदला (० - पारदर्शक, २५५ - अपारदर्शक) - फाइल डाउनलोड थांबवायचे का? - ऑनलाइन नकाशे (टाइल्स) - साधारण नकाशे (वेक्टर) - ऑनलाइन नकाशे (टाइल्स) - ऑनलाइन नकाशे वापरा (डाउनलोड करून एसडी कार्ड वार साठवा) - ऑनलाइन नकाशे - Configure online or cached tile map sources - - प्लगिन्स - प्लगिन्स - निवडलेल्या आवाजाची वाक्ये ऐकवा - आवाज तपासा - जिपीएक्स फाइल्स ओएसएम ला पाठवायच्या का? - वर्णन - जीपीएक्स फाइल्स अपलोड करण्यासाठी ओएसएम युजरनेम आणि पासवर्ड सांगा. - सहाय्य - नविन वैशिठ्यासाठी सहाय्य करा - - पट्टी दाखवा - माहिती - मदत - - चालू - बंद - पुन्हा मेनूकडे - झूम कमी करा - झूम वाढवा - झूम लेवल आहे - उत्तर - इशान्य-उत्तर - इशान्य - इशान्य-पुर्व - पुर्व - आग्नेय-पुर्व - आग्नेय - आग्नेय-दक्षिण - दक्षिण - नैऋत्य-दक्षिण - नैऋत्य - नैऋत्य-पश्चिम - पश्चिम - वायव्य-पश्चिम - वायव्य - वायव्य-उत्तर - पुढचा - पुढील उजवा - उजवीकडे - मागील उजवा - मागे - मागील डावा - डावीकडे - पुढील डावा - वाजता - कडे - अचूकता - उंची - काहि माहिती नाही - बाजूप्रमाणे (८ भाग) - घड्याळासारखे (१२ भाग) - दिशांचा प्रकार - मी इथे आहे - निवडलेले क्षेत्र दाखवण्यासाठी पुरेशी प्रोसेस मेमरी नाही - अपलोड करत आहे … - {0} पीओआय/नोट्स अपलोड झाले - - बदल ओएसएम मधे अपलोड करा - बदल काढून टाका - - निशुल्क व्हर्जन - पिओआय वर्णन दाखवा - उत्तर अमेरिका - उत्तर अमेरिका - युनायटेड स्टेट्स - मध्य अमेरिका - दक्षिण अमेरिका - युरोप - युरोप - फ्रान्स - युरोप - जर्मनी - रशिया - अफ्रिका - आशिया - ऑस्ट्रेलिया आणि ओशेनिया - विकिपेडिया (ऑफलाइन) - - दिशादर्शन - दिशादर्शनाचे पर्याय ठरवा - ऑफलाइन डेटा (डाउनलोड) - सर्वसाधारण पर्याय - तुमचे ओएसएम युजरनेम - तुमचा ओएसएम पासवर्ड - - %1$s एमबी डाउनलोड करण्यसाठी पुरेशी जागा शिल्लक नाही (शिल्लक जागा: %2$s). - {0} फाइल डाउनलोड करायच्या का? + + + डाव्या बाजूने ड्रायव्हिंग + अजून स्थान माहित नाही + पारदर्शकता बदला (० - पारदर्शक, २५५ - अपारदर्शक) + फाइल डाउनलोड थांबवायचे का? + ऑनलाइन नकाशे (टाइल्स) + साधारण नकाशे (वेक्टर) + ऑनलाइन नकाशे (टाइल्स) + ऑनलाइन नकाशे वापरा (डाउनलोड करून एसडी कार्ड वार साठवा) + ऑनलाइन नकाशे + Configure online or cached tile map sources + प्लगिन्स + प्लगिन्स + निवडलेल्या आवाजाची वाक्ये ऐकवा + आवाज तपासा + जिपीएक्स फाइल्स ओएसएम ला पाठवायच्या का? + वर्णन + जीपीएक्स फाइल्स अपलोड करण्यासाठी ओएसएम युजरनेम आणि पासवर्ड सांगा. + सहाय्य + नविन वैशिठ्यासाठी सहाय्य करा + पट्टी दाखवा + माहिती + मदत + चालू + बंद + पुन्हा मेनूकडे + झूम कमी करा + झूम वाढवा + झूम लेवल आहे + उत्तर + इशान्य-उत्तर + इशान्य + इशान्य-पुर्व + पुर्व + आग्नेय-पुर्व + आग्नेय + आग्नेय-दक्षिण + दक्षिण + नैऋत्य-दक्षिण + नैऋत्य + नैऋत्य-पश्चिम + पश्चिम + वायव्य-पश्चिम + वायव्य + वायव्य-उत्तर + पुढचा + पुढील उजवा + उजवीकडे + मागील उजवा + मागे + मागील डावा + डावीकडे + पुढील डावा + वाजता + कडे + अचूकता + उंची + काहि माहिती नाही + बाजूप्रमाणे (८ भाग) + घड्याळासारखे (१२ भाग) + दिशांचा प्रकार + मी इथे आहे + निवडलेले क्षेत्र दाखवण्यासाठी पुरेशी प्रोसेस मेमरी नाही + अपलोड करत आहे … + {0} पीओआय/नोट्स अपलोड झाले + बदल ओएसएम मधे अपलोड करा + बदल काढून टाका + निशुल्क व्हर्जन + पिओआय वर्णन दाखवा + उत्तर अमेरिका + उत्तर अमेरिका - युनायटेड स्टेट्स + मध्य अमेरिका + दक्षिण अमेरिका + युरोप + युरोप - फ्रान्स + युरोप - जर्मनी + रशिया + अफ्रिका + आशिया + ऑस्ट्रेलिया आणि ओशेनिया + विकिपेडिया (ऑफलाइन) + दिशादर्शन + दिशादर्शनाचे पर्याय ठरवा + ऑफलाइन डेटा (डाउनलोड) + सर्वसाधारण पर्याय + तुमचे ओएसएम युजरनेम + तुमचा ओएसएम पासवर्ड + %1$s एमबी डाउनलोड करण्यसाठी पुरेशी जागा शिल्लक नाही (शिल्लक जागा: %2$s). + {0} फाइल डाउनलोड करायच्या का? {1} एमबी जागा लागेल. (सध्या {2} एमबी जागा शिल्लक आहे.) - - - वेक्टर नकाशाचे पर्याय - %1$s काढून टाकायचे का? - उपनगर - खेडं - गाव - तालुका - शहर - फाइलचे नाव बदलू शकत नाही. - ह्या नावाची फाइल आधीच अस्तित्वात आहे. - जिपिएक्स राऊट - नावाने शोधा - नाव बदला - - स्थान शोधत आहे … - माझे स्थान (सापडले) - पत्ता … - आवडती ठिकाणे… - - ह्याच्या जवळ शोधा : - इथे जवळ शोधा - फाइलचे नाव : - ह्या नावाने फाइल आधीच अस्तित्वात आहे. - साठवा - - ओएसएम ला पाठवा - नकाशा सविस्तरपणे दाखवा - घर - मित्र - ठिकाणे - इतर - नाव - वर्गीकरण - नाही, धन्यवाद - नकाशाच्या फाइल्स मॅनेज करा - डाउनलोड - पिओआय डेटा - नविन शोध - नकाशावरील नावांसाठी अक्षरांचा आकार ठरवा - अक्षरांचा आकार - - - पुढे - मागे - मैल/फूट - मैल/यार्ड - किमी/मी - यार्ड - फूट - मैल/तास - शैक्षणिक - आपात्कालिन - मनोरंजन - आर्थिक - आरोग्य - ऐतिहासिक - सैनिकी - नैसर्गिक - कार्यालय - इतर - दुकाने - खेळ - उपजीवन - पर्यटन - परिवहन - किमी - किमी/तास - मी - सर्वात जवळील पिओआय - खाद्य़ - पर्यटकांसाठी - इंधन - दिवस - रात्र - सुर्योदय/सूर्यास्त - सर्व निवडा - वेगवान रस्ता - निवडा सर्वात वेगवान रस्त्यासाठी किंवा निवड काढा सर्वात जवळच्या रस्त्यासाठी - नकाशा डाउनलोड करा - पिओआय वेबसाइट दाखवा - पिओआय फोन दाखवा - वेबसाइट - फोन - - - ध्वनीमुद्रित आवाज - पिओआय बदला - पिओआय काढून टाका - कंपास प्रमाणे - दिशेप्रमाणे - फिरवू नका - मार्ग तपशील - कुठलाही - आवडती ठिकाणे - नकाशाचा स्त्रोत… - पिओआय शोधा - - मी कुठे आहे? - नेटवर्क - जीपीइस - सेकंद - मि. - आवाज चालू आहे - आवाज बंद आहे - दिशादशर्नासाठी आवाज मार्गदर्शन निवडा - आवाज मार्गदर्शन - - उजवीकडे वळा आणि जा - पटकन उजवीकडे वळा आणि जा - हलके उजवीकडे वळा आणि जा - डावीकडे वळा आणि जा - पटकन डावीकडे वळा आणि जा - हलके डावीकडे वळा आणि जा - उलटे वळा आणि जा - सरळ जा - नंतर - सिग्नल शोधत आहे… - जवळपास शोधा - उभा - आडवा - नविन नियम जोडा - मार्ग - थांबा - थांबे - शोध संपवा - उतरण्याचा थांबा निवडा - प्रवासाचे अंतर - परिवहन - ठीक - सार्वजनिक परिवहन थांबे नकाशावर दाखवा - परिवहन थांबे दाखवा - शहर: {0} - रस्ता: {0}, {1} - चौक: {0} x {1} in {2} - इमारत: {0}, {1}, {2} - "सगळे काढून टाका" - डेटा अपलोड करत आहे… - अपलोड करत आहे… - काही सापडले नाही - शोधत आहे… - पत्ता शोधत आहे… - ऑफलाएन शोध - ऑनलाएन शोध - एकुण अंतर %1$s, प्रवासाचा वेळ %2$d ता %3$d मि. - डाउनलोड {0} - {1} ? - पत्ता - डाउनलोड यशस्वी - - - उपलब्ध प्रदेशांची यादी डाउनलोड करत आहे… - प्रदेशांची यादी osmand.net वरून काढू शकलो नाही. - - फक्त दाखवा - पालन करा - परिवहन माध्यम: - क्रुपया आधी इच्छिन स्थळ निवडा - - असफल - - नविन मार्ग निवडला, अंतर - आपण इच्छित स्थळी पोहोचला आहात - बंद करा - डेटा लोड करत आहे… - समाप्त - - मार्ग गणना करण्य़ासाठी इंटरनेटचा वापर करा - ऑनलाइन दिशादर्शन वापरा - डेटा - आधिक सेटिंग्स - सेटिंग्स - नकाशा अपडेट करा - - आवडत्या ठिकणात नोंद करा - इंग्लिश आणि बोली नावांची निवड - नकाशामधे इंग्लिश नावे वापरा - ऍप्लिकेशन सेटिंग्स - पत्ता शोधा - इमारत निवडा - रस्ता निवडा - शहर किंवा पोस्टकोड निवडा - देश निवडा - नकाशाचा स्त्रोत - इंटरनेट वापरा - तुमचे स्थान दाखवा - - - नसलेल्या टाइल्स डाउनलोड करण्यासाठी इंटरनेटचा वापर करा - दिशादर्शन ऍप्लिकेशन - बाहेर पडा - - - - शोधा - शोधा - अजून शोधा - यादिमधून प्रदेश निवडा - कार - सायकल - पादचारी - मध्य़ - खाली - अक्षांश - रेखांश - नकाशावर दाखवा - पत्ता निवडा - प्रदेश - शहर - रस्ता - इमारत - इमारत - - - नकाशा अपडेट करा - पिओआय तयार करा - हो - रद्द करा - नाही - आवडते ठिकण बदला - आवडते ठिकाण काढून टाका - पिओआय बदला - पिओआय तयार करा - पिओआय काढून टाका - काढून टाका - "उघडे असण्याची वेळ" - टिप्पणी - - - पत्त्याचा शोध - सार्वजनिक परिवहन शोध - आवडत्या ठिकणांचा शोध - नकाशा आधिक तपशिलवार दाखवा - - तास - मिनिटे - कंपास वापरा -परिवहन माध्यम निवडा -सुर्योदय : %1$s \nसूर्यास्त : %2$s -दिवस/रात्र माहिती - - - -स्क्रिन कॉन्फिगर करा -कच्चे रस्ते टाळा -टाळा… -पट्टी -बघण्याची दिशा - - -सलग -इमेल -पार्किंग + वेक्टर नकाशाचे पर्याय + %1$s काढून टाकायचे का? + उपनगर + खेडं + गाव + तालुका + शहर + फाइलचे नाव बदलू शकत नाही. + ह्या नावाची फाइल आधीच अस्तित्वात आहे. + जिपिएक्स राऊट + नावाने शोधा + नाव बदला + स्थान शोधत आहे … + माझे स्थान (सापडले) + पत्ता … + आवडती ठिकाणे… + ह्याच्या जवळ शोधा : + इथे जवळ शोधा + फाइलचे नाव : + ह्या नावाने फाइल आधीच अस्तित्वात आहे. + साठवा + ओएसएम ला पाठवा + नकाशा सविस्तरपणे दाखवा + घर + मित्र + ठिकाणे + इतर + नाव + वर्गीकरण + नाही, धन्यवाद + नकाशाच्या फाइल्स मॅनेज करा + डाउनलोड + पिओआय डेटा + नविन शोध + नकाशावरील नावांसाठी अक्षरांचा आकार ठरवा + अक्षरांचा आकार + पुढे + मागे + मैल/फूट + मैल/यार्ड + किमी/मी + यार्ड + फूट + मैल/तास + शैक्षणिक + आपात्कालिन + मनोरंजन + आर्थिक + आरोग्य + ऐतिहासिक + सैनिकी + नैसर्गिक + कार्यालय + इतर + दुकाने + खेळ + उपजीवन + पर्यटन + परिवहन + किमी + किमी/तास + मी + सर्वात जवळील पिओआय + खाद्य़ + पर्यटकांसाठी + इंधन + दिवस + रात्र + सुर्योदय/सूर्यास्त + सर्व निवडा + वेगवान रस्ता + निवडा सर्वात वेगवान रस्त्यासाठी किंवा निवड काढा सर्वात जवळच्या रस्त्यासाठी + नकाशा डाउनलोड करा + पिओआय वेबसाइट दाखवा + पिओआय फोन दाखवा + वेबसाइट + फोन + ध्वनीमुद्रित आवाज + पिओआय बदला + पिओआय काढून टाका + कंपास प्रमाणे + दिशेप्रमाणे + फिरवू नका + मार्ग तपशील + कुठलाही + आवडती ठिकाणे + नकाशाचा स्त्रोत… + पिओआय शोधा + मी कुठे आहे? + नेटवर्क + जीपीइस + सेकंद + मि. + आवाज चालू आहे + आवाज बंद आहे + दिशादशर्नासाठी आवाज मार्गदर्शन निवडा + आवाज मार्गदर्शन + उजवीकडे वळा आणि जा + पटकन उजवीकडे वळा आणि जा + हलके उजवीकडे वळा आणि जा + डावीकडे वळा आणि जा + पटकन डावीकडे वळा आणि जा + हलके डावीकडे वळा आणि जा + उलटे वळा आणि जा + सरळ जा + नंतर + सिग्नल शोधत आहे… + जवळपास शोधा + उभा + आडवा + नविन नियम जोडा + मार्ग + थांबा + थांबे + शोध संपवा + उतरण्याचा थांबा निवडा + प्रवासाचे अंतर + परिवहन + ठीक + सार्वजनिक परिवहन थांबे नकाशावर दाखवा + परिवहन थांबे दाखवा + शहर: {0} + रस्ता: {0}, {1} + चौक: {0} x {1} in {2} + इमारत: {0}, {1}, {2} + "सगळे काढून टाका" + डेटा अपलोड करत आहे… + अपलोड करत आहे… + काही सापडले नाही + शोधत आहे… + पत्ता शोधत आहे… + ऑफलाएन शोध + ऑनलाएन शोध + एकुण अंतर %1$s, प्रवासाचा वेळ %2$d ता %3$d मि. + डाउनलोड {0} - {1} ? + पत्ता + डाउनलोड यशस्वी + उपलब्ध प्रदेशांची यादी डाउनलोड करत आहे… + प्रदेशांची यादी osmand.net वरून काढू शकलो नाही. + फक्त दाखवा + पालन करा + परिवहन माध्यम: + क्रुपया आधी इच्छिन स्थळ निवडा + असफल + नविन मार्ग निवडला, अंतर + आपण इच्छित स्थळी पोहोचला आहात + बंद करा + डेटा लोड करत आहे… + समाप्त + मार्ग गणना करण्य़ासाठी इंटरनेटचा वापर करा + ऑनलाइन दिशादर्शन वापरा + डेटा + आधिक सेटिंग्स + सेटिंग्स + नकाशा अपडेट करा + आवडत्या ठिकणात नोंद करा + इंग्लिश आणि बोली नावांची निवड + नकाशामधे इंग्लिश नावे वापरा + ऍप्लिकेशन सेटिंग्स + पत्ता शोधा + इमारत निवडा + रस्ता निवडा + शहर किंवा पोस्टकोड निवडा + देश निवडा + नकाशाचा स्त्रोत + इंटरनेट वापरा + तुमचे स्थान दाखवा + नसलेल्या टाइल्स डाउनलोड करण्यासाठी इंटरनेटचा वापर करा + दिशादर्शन ऍप्लिकेशन + बाहेर पडा + शोधा + शोधा + अजून शोधा + यादिमधून प्रदेश निवडा + कार + सायकल + पादचारी + मध्य़ + खाली + अक्षांश + रेखांश + नकाशावर दाखवा + पत्ता निवडा + प्रदेश + शहर + रस्ता + इमारत + इमारत + नकाशा अपडेट करा + पिओआय तयार करा + हो + रद्द करा + नाही + आवडते ठिकण बदला + आवडते ठिकाण काढून टाका + पिओआय बदला + पिओआय तयार करा + पिओआय काढून टाका + काढून टाका + "उघडे असण्याची वेळ" + टिप्पणी + पत्त्याचा शोध + सार्वजनिक परिवहन शोध + आवडत्या ठिकणांचा शोध + नकाशा आधिक तपशिलवार दाखवा + तास + मिनिटे + कंपास वापरा + परिवहन माध्यम निवडा + सुर्योदय : %1$s \nसूर्यास्त : %2$s + दिवस/रात्र माहिती + स्क्रिन कॉन्फिगर करा + कच्चे रस्ते टाळा + टाळा… + पट्टी + बघण्याची दिशा + सलग + इमेल + पार्किंग आपत्कालीन सार्वजनिक परिवहन करमणूक - - प्रथम शहर किंवा रस्ता निवडा + प्रथम शहर किंवा रस्ता निवडा वेळ अचूकपणा रस्त्याचे नाव - घर क्रमांक + घर क्रमांक पत्ता निवडा जिपिएस माहिती नकाशा प्राधान्य… - काही नाही + काही नाही दाखवा फोटो घ्या फोटो घ्या विडिओ रेकॉर्ड करा आवाज रेकॉर्ड करा नकाशा पहा - इच्छित स्थळ %1$s + इच्छित स्थळ %1$s इच्छित स्थळ निवडा रस्ता जवळपास्च्या शहरात शोधा वेग @@ -378,115 +339,97 @@ इच्छित स्थळ काढून टाका आवडते ठिकाण निवडा महामार्गांना प्राधान्य द्या - महामार्गांना प्राधान्य द्या + महामार्गांना प्राधान्य द्या क्रम बदला सुरू करा बंद करा - इतर नकाशे फक्त रस्ते साधारण नकाशा फक्त रस्त्याचा नकाशा - - सीमा - वेग मर्यादा + सीमा + वेग मर्यादा जिपिएक्स अक्षांश %1$.3f, रेखांश %2$.3f - - - इमारत सापडली नाही. इच्छित स्थळाची दिशा दाखवा मार्ग नाही - राहण्याची व्यवस्था - - - रस्त्याचे नाव - - मी कुठे आहे - कंपास - वाहनतळ - वेग - इच्छित स्थळ - उंची - पुढचे वळण - पुढचे वळण (लहान) - पुढचे दुसरे वळण - सुरूवातीचे ठिकाण रस्त्यापासून खुप दूर आहे. - डावीकडे रहा आणि जा - उजवीकडे रहा आणि जा - डावीकडून ट्राफिक असलेल्या देशांसाठी निवडा - सुरूवातीचे स्थळ अजून सापडले नाही - मैल - आवडते ठिकाण \'%s\' काढायचे का? - आवडते ठिकाण {0} यशस्वीरित्या काढले. - आवडत्या ठिकाणाचे नाव द्या - छेदणारा रस्ता - - छेदणारा रस्ता निवडा - सर्वात जवळच्या सुविधा - पिओआय निवडा - बघण्याची दिशा दाखवा - - रस्ते/इमारती लोड करत आहे… - पोस्ट कोड लोड करत आहे… - रस्ते लोड करत आहे… - शहरे लोड करत आहे… - पिओआय - पिओआय लोड करत आहे… - उघडण्याची वेळ - आवडते ठिकाण - पिओआय… - - मार्ग - - ऑफलाएन वेक्टर नकाशे - वेक्टर नकाशे लोड झाले नाही - - सार्वजनिक परिवहन शोधा - - डाउनलोड केलेले - मानव निर्मित - प्रशासकीय - अडथळे - लांबीचे माप बदला - लांबीचे एकक - - - - अपूर्ण - भाषा - भाषा निवडा (बदलल्यावर ओएसएमएएनडी पुन्हा चालू करा) - सिस्टिम - - घरक्रमांक + राहण्याची व्यवस्था + रस्त्याचे नाव + मी कुठे आहे + कंपास + वाहनतळ + वेग + इच्छित स्थळ + उंची + पुढचे वळण + पुढचे वळण (लहान) + पुढचे दुसरे वळण + सुरूवातीचे ठिकाण रस्त्यापासून खुप दूर आहे. + डावीकडे रहा आणि जा + उजवीकडे रहा आणि जा + डावीकडून ट्राफिक असलेल्या देशांसाठी निवडा + सुरूवातीचे स्थळ अजून सापडले नाही + मैल + आवडते ठिकाण \'%s\' काढायचे का? + आवडते ठिकाण {0} यशस्वीरित्या काढले. + आवडत्या ठिकाणाचे नाव द्या + छेदणारा रस्ता + छेदणारा रस्ता निवडा + सर्वात जवळच्या सुविधा + पिओआय निवडा + बघण्याची दिशा दाखवा + रस्ते/इमारती लोड करत आहे… + पोस्ट कोड लोड करत आहे… + रस्ते लोड करत आहे… + शहरे लोड करत आहे… + पिओआय + पिओआय लोड करत आहे… + उघडण्याची वेळ + आवडते ठिकाण + पिओआय… + मार्ग + ऑफलाएन वेक्टर नकाशे + वेक्टर नकाशे लोड झाले नाही + सार्वजनिक परिवहन शोधा + डाउनलोड केलेले + मानव निर्मित + प्रशासकीय + अडथळे + लांबीचे माप बदला + लांबीचे एकक + अपूर्ण + भाषा + भाषा निवडा (बदलल्यावर ओएसएमएएनडी पुन्हा चालू करा) + सिस्टिम + घरक्रमांक उघडा ठिकाणे - शोध - तपशील दाखवा - संदेश - वाहतुकीची चिह्ने व नियम नेमकेपणाने दाखविण्यासाठी कृपया आपले वाहनचालनाचे क्षेत्र निवडा: - सुस्वागतम् + शोध + तपशील दाखवा + संदेश + वाहतुकीची चिह्ने व नियम नेमकेपणाने दाखविण्यासाठी कृपया आपले वाहनचालनाचे क्षेत्र निवडा: + सुस्वागतम् आपणांस इतिहास पुसून टाकावयाचा आहे का? ता - मि - उर्वरित - - - किंवा - इतिहास - नकाशावर निवडा - आयात - निर्यात - अधिक… - अधिक क्रिया - क्रिया {0} - पत्ता - माझी ठिकाणे - ध्वनि - चलच्चित्र - छायाचित्र - जिपिएक्स रंग + मि + उर्वरित + + + किंवा + इतिहास + नकाशावर निवडा + आयात + निर्यात + अधिक… + अधिक क्रिया + क्रिया {0} + पत्ता + माझी ठिकाणे + ध्वनि + चलच्चित्र + छायाचित्र + जिपिएक्स रंग जिपिएक्स रुंदी लाल नारंगी @@ -507,12 +450,12 @@ विकिपेडिया विकिपेडिया नकाशे डाउनलोड करा - सद्ध्याचा मार्ग + सद्ध्याचा मार्ग वापरू नका - + मुळ रंग रात्र - महिना आणि देश निवडा + महिना आणि देश: सकाळ इतर नंतर @@ -557,4 +500,15 @@ मेमरी कार्ड बस ट्रेन - \ No newline at end of file + आकार निवडा + वर्तुळ + अष्टकोन + चौरस + भाषा + भाषा + सर्व भाषा + उर्दु + पंजाबी + नेपाळी + गुजराथी + \ No newline at end of file From feb719b5d47ac70995cffdc84c7975b77c09610c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?O=C4=9Fuz=20Ersen?= Date: Mon, 25 May 2020 06:20:58 +0000 Subject: [PATCH 085/108] Translated using Weblate (Turkish) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-tr/strings.xml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/OsmAnd/res/values-tr/strings.xml b/OsmAnd/res/values-tr/strings.xml index 90aaa300ec..8337605fd5 100644 --- a/OsmAnd/res/values-tr/strings.xml +++ b/OsmAnd/res/values-tr/strings.xml @@ -3435,22 +3435,22 @@ Kamera deklanşör sesi Yetkilendirme başarılı Kategorileri yeniden düzenle - Listenin sıralama düzenini değiştirin, gereksiz kategorileri gizleyin. Profillerle tüm değişiklikleri içe veya dışa aktarabilirsiniz. - Bir veya birkaç gerekli kategori seçerek yeni bir özel kategori ekleyebilirsiniz. + Liste sıralama düzenini değiştirin, kategorileri gizleyin. Profillerle tüm değişiklikleri içe veya dışa aktarabilirsiniz. + Bir veya daha fazla kategori seçerek yeni bir özel kategori ekleyebilirsiniz. Mevcut Özel kategori ekle Sadece geceleri göster - Tüm eklenti ayarları öntanımlı durumuna geri yüklendi. - Tüm profil ayarları öntanımlı durumuna geri yüklendi. + Tüm eklenti ayarları öntanımlı değerlerine geri yüklendi. + Tüm profil ayarları öntanımlı değerlerine geri yüklendi. %1$s/%2$s %1$s\'de gün batımı %1$s\'de gün doğumu - Android cihazınızda erişilebilirlik modu kapalı. - Öntanımlılara sıfırla, sıralama düzenini kurulumdan sonraki öntanımlı duruma sıfırlayacaktır. + Android sisteminizde erişilebilirlik modu kapalı. + \'Öntanımlılara sıfırla\', sıralama düzenini öntanımlı kurulum durumuna geri döndürecektir. Sistem ekran zaman aşımını kullan - Öntanımlı olarak devre dışıdır, OsmAnd ön planda çalışıyorsa ekran zaman aşımına uğramaz. + Öntanımlı olarak devre dışıdır: OsmAnd ön planda çalışırken ekran zaman aşımına uğramayacaktır. \n -\nEtkinleştirilirse OsmAnd sistem zaman aşımı ayarlarını kullanacaktır. +\nEtkinleştirilirse, OsmAnd sistem zaman aşımı ayarını kullanacaktır. Kaydedilen verileri temizle • Profiller: artık sırayı değiştirebilir, harita simgesini ayarlayabilir, temel profiller için tüm ayarları değiştirebilir ve bunları öntanımlılara geri yükleyebilirsiniz \n @@ -3667,7 +3667,7 @@ Bu eylemlere “%1$s” düğmesine dokunarak erişebilirsiniz. Toplu taşıma araçlarını gizle Toplu taşıma araçlarını göster - Toplu taşıma araçlarını göster / gizle + Toplu taşıma araçlarını göster/gizle Haritada toplu taşıma araçlarını gösteren veya gizleyen düğme. POI Oluştur / Düzenle Park etme alanları From c888b35c7437f3f548ccb89f199a3a3eee1e6666 Mon Sep 17 00:00:00 2001 From: Athoss Date: Mon, 25 May 2020 08:11:21 +0000 Subject: [PATCH 086/108] Translated using Weblate (Hungarian) Currently translated at 96.1% (3213 of 3341 strings) --- OsmAnd/res/values-hu/strings.xml | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/OsmAnd/res/values-hu/strings.xml b/OsmAnd/res/values-hu/strings.xml index 2453df8c53..d619f0d562 100644 --- a/OsmAnd/res/values-hu/strings.xml +++ b/OsmAnd/res/values-hu/strings.xml @@ -2543,11 +2543,11 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Lezárt jegyzetek megjelenítése OSM-jegyzetek megjelenítése/elrejtése a térképen. GPX – megfelelő export a JOSM és más OSM-szerkesztők számára. - OSC – megfelelő export az OpenStreetMap számára. + OSC – megfelelő export az OSM számára. GPX-fájl OSC-fájl Fájltípus kijelölése - Exportálás típusának kijelölése: OSM-jegyzetek, érdekes pontok (POI-k) vagy mindkettő. + Exportálás OSM-jegyzetként, érdekes pontként (POI) vagy mindkét módon. Minden adat OSM-jegyzetek Holnap ekkor nyit: @@ -2712,7 +2712,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Évente megújul %1$.2f %2$s Fizetési időköz: - Az adományok az OpenStreetMap-térképezést támogatják. + Az adományok az OSM-térképezést támogatják. Törlöd „%s” térképjelölőt\? Térképjelölő szerkesztése Utca keresése @@ -3138,7 +3138,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Navigáció testreszabása Téma, mértékegység, régió Profil testreszabása - A riasztások a képernyő bal alsó sarkában jelennek meg a navigáció közben. + A képernyő bal alsó sarkában megjelenő riasztások navigáció közben. Nyelv és kimenet Profilok létrehozása, importálása, szerkesztése Alkalmazásprofilok kezelése… @@ -3156,7 +3156,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Útvonal paraméterek Bővítménybeállítások Töltsd le a részletes %s térképet a terület megtekintéséhez. - Belső tároló, a felhasználó és a többi alkalmazás számára rejtett, kizárólag az OsmAnd számára hozzáférhető + Az OsmAnd belső tárolója (felhasználók és más alkalmazások számára rejtett). Tárolás mappájának módosítása Szélességkorlátozás Adja meg az útvonalakon a járművekre vonatkozó szélességkorlátozást. @@ -3450,8 +3450,8 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Az alkalmazás részletes naplóinak ellenőrzése és megosztása A beállítás használatához engedélyre van szükség. Kategóriák átrendezése - Lista sorrendjének módosítása, fölösleges kategóriák elrejtése. A lista a profilokkal importálható és exportálható. - Egy vagy több szükséges kategória kijelölésével hozzáadhat egy egyedi kategóriát. + Lista sorrendjének módosítása, kategóriák elrejtése. A lista a profilokkal importálható és exportálható. + Egy vagy több kategória kijelölésével hozzáadhat egy egyedi kategóriát. Rendelkezésre áll Egyedi kategória hozzáadása Csak éjszaka jelenjék meg @@ -3482,7 +3482,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Megjelenítés stílusa Útvonaltervezés %1$s/%2$s - Alapértelmezésben le van tiltva, így amennyiben az OsmAnd az előtérben fut, a kijelző nem kapcsol ki. + Alapértelmezésben le van tiltva: amíg az OsmAnd az előtérben fut, a kijelző nem kapcsol ki. \n \nAmennyiben engedélyezve van, az OsmAnd az időtúllépésre vonatkozó rendszerbeállítást használja. Kijelző időtűllépés rendszerbeállítás használata @@ -3491,9 +3491,9 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Legkisebb távolság, amely felett újraszámítja az útvonalat %1$s — %2$s — %3$s Menü - Bővítmény letiltva + Bővítmény kikapcsolva Beállítások megnyitása - Újraszámítás letiltása + Nincs újraszámítás Kérem, adjon nevet a profilnak Válassza ki az importálandó adatot. Mindkettő megtartása @@ -3515,7 +3515,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Az útvonal újraszámításra kerül, amennyiben az útvonal és a jelenlegi helyzet közötti távolság nagyobb, mint a kiválasztott érték. %1$s a %2$s-ból Lejtők - Domborzat megjelenítése/elrejtése + Domborzat megjelenítése / elrejtése Domborzat elrejtése Domborzat megjelenítése Váltógomb, amely a térképen megjeleníti vagy elrejti a domborzati réteget. @@ -3541,7 +3541,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Elválasztó Az ez alatti elemek elválasztásra kerülnek egy elválasztóval. Ezek az elemek a menüből elrejtésre kerültek, azonban az általuk képviselt beállítások vagy bővítmények továbbra is érvényben maradnak. - A \'fő műveletek\'-hez csak 4 elem tartozhat. + Csak 4 elemet tartalmaz. Rendszeralkalmazás használata Fényképező zárhang Hitelesítés sikeres @@ -3606,7 +3606,7 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Kedvencek Előfizetés - OsmAnd Live OsmAnd vásárlások - Útmutató a térkép szimbolikájához + Útmutató a térkép szimbolikájához. Navigációs profilok Váltógomb, amely a térképen megjeleníti vagy elrejti a tömegközlekedési réteget. Ezekhez a műveletekhez a \"%1$s\" gombra koppintva férhet hozzá. @@ -3615,13 +3615,13 @@ Ha szereted az OsmAndot és az OSM-et, és szeretnéd támogatni a fejlődésük Tömegközlekedés elrejtése Tömegközlekedés megjelenítése Tömegközlekedés megjelenítése/elrejtése - POI készítés/módosítás + POI készítés / módosítás Parkolási pozíció Kedvenc hozzáadása/módosítása Alapértelmezett elemsorrend visszaállítása Vissza a szerkesztéshez - A művelethez kiválasztott profilok nem találhatók. - A műveletgombra koppintva válthat a kiválasztott profilok között. + Nem található ilyen profil + A műveletgomb vált a kiválasztott profilok között. Profil hozzáadása Alkalmazásprofil módosítása Kombináljon POI típusokat különböző kategóriákból. Koppintson egy kapcsolóra az összes altípus kiválasztásához, vagy koppintson egy szövegre az egyes altípusok kijelöléséhez. From c81c750e9912cfd3e653b3070bc3d212037b34d9 Mon Sep 17 00:00:00 2001 From: Tymofij Lytvynenko Date: Mon, 25 May 2020 00:15:33 +0000 Subject: [PATCH 087/108] Translated using Weblate (Ukrainian) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-uk/strings.xml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/OsmAnd/res/values-uk/strings.xml b/OsmAnd/res/values-uk/strings.xml index 5bda3f8313..77e3f8e16f 100644 --- a/OsmAnd/res/values-uk/strings.xml +++ b/OsmAnd/res/values-uk/strings.xml @@ -1373,7 +1373,7 @@ Камера контролю швидкості Попередження на дорозі Натисніть на будь-який наявний елемент для перегляду додаткових відомостей, довго утримуйте, щоб знедіяти або вилучити. Наявні дані на пристрої (%1$s вільно): - Годинник + Перегляд Лижні траси Тип лижні Не використовувати маршрутизацію версії 1.9 @@ -3475,12 +3475,12 @@ Звук затвору камери Авторизація пройшла успішно Перевпорядкувати категорії - Змінюйте порядок сортування списку, приховайте непотрібні категорії. Ви можете імпортувати або експортувати всі зміни з профілями. + Змінюйте впорядкування списку, приховайте непотрібні категорії. Ви можете імпортувати або експортувати всі зміни з профілями. Ви можете додати нову власну категорію, вибравши одну або кілька необхідних категорій. Доступні Додати власну категорію Показувати лише вночі - Усі налаштування плагіна відновлено до типового стану. + Усі налаштування втулка відновлено до усталеного стану. Усі налаштування профілю відновлено до усталеного стану. %1$s/%2$s Захід сонця о %1$s @@ -3707,7 +3707,7 @@ Розташування припаркованого авто Приховати громадський транспорт Показати громадський транспорт - Показати / приховати громадський транспорт + Показати/приховати громадський транспорт Кнопка показу або приховування громадського транспорту на мапі. Створити / змінити POI Додати / редагувати вибране From cddb6caf2f431cba6a3981023d505307ac936d68 Mon Sep 17 00:00:00 2001 From: ace shadow Date: Sun, 24 May 2020 23:45:52 +0000 Subject: [PATCH 088/108] Translated using Weblate (Slovak) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-sk/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-sk/strings.xml b/OsmAnd/res/values-sk/strings.xml index e364222459..efdf90c625 100644 --- a/OsmAnd/res/values-sk/strings.xml +++ b/OsmAnd/res/values-sk/strings.xml @@ -3467,9 +3467,9 @@ Zvuk spúšte fotoaparátu Prihlásenie je úspešné Usporiadať kategórie - Zmeňte poradie triedenia zoznamu, skryte nepotrebné kategórie. Môžete importovať a exportovať všetky zmeny s profilmi. + Zmeňte poradie triedenia zoznamu, skryte kategórie. Môžete importovať a exportovať všetky zmeny s profilmi. Môžete pridať novú kategóriu zvolením jednej alebo viacerých existujúcich. - Obnovenie do východzieho nastavenia vymaže poradie triedenia ako po novej inštalácii. + \"Obnovenie do východzieho nastavenia\" obnoví poradie triedenia ako po novej inštalácii. Dostupné Pridať vlastnú kategóriu Zobraziť iba v noci @@ -3478,10 +3478,10 @@ %1$s/%2$s Západ slnka o %1$s Východ slnka o %1$s - Režim uľahčenia prístupu je vo vašom Androide vypnutý. + Režim uľahčenia prístupu je vo vašom systéme Android vypnutý. Použiť systémový časový limit obrazovky - Predvolene vypnuté, ak OsmAnd beží v popredí, obrazovka nezhasne. -\n + Predvolene vypnuté: ak OsmAnd beží v popredí, obrazovka nezhasne. +\n \nAk je zapnuté, OsmAnd zhasne obrazovku podľa limitu nastaveného v systéme. Predvolená hodnota aplikácie (%s) Vlastný profil @@ -3709,7 +3709,7 @@ \n Skryť verejnú dopravu Zobraziť verejnú dopravu - Zobraziť / skryť verejnú dopravu + Zobraziť/skryť verejnú dopravu Tlačidlo na zobrazenie alebo skrytie verejnej dopravy na mape. Vytvoriť / Upraviť bod záujmu Parkovacie miesta From 01ec18f4b48f29536ce86260e8c2df85f31452a7 Mon Sep 17 00:00:00 2001 From: Yaron Shahrabani Date: Mon, 25 May 2020 07:33:25 +0000 Subject: [PATCH 089/108] Translated using Weblate (Hebrew) Currently translated at 99.9% (3339 of 3341 strings) --- OsmAnd/res/values-he/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-he/strings.xml b/OsmAnd/res/values-he/strings.xml index f2a46b2596..16d80dc602 100644 --- a/OsmAnd/res/values-he/strings.xml +++ b/OsmAnd/res/values-he/strings.xml @@ -3451,18 +3451,18 @@ לבדוק ולשתף תיעוד מפורט של יומני היישומון נדרשת הרשאה כדי להשתמש באפשרות הזו. סידור הקטגוריות מחדש - ניתן להחליף את סדר הרשימה ולהסתיר קטגוריות בלתי נחוצות. כמו כן, אפשר לייבא או לייצא את כל השינויים עם פרופילים. - ניתן להוסיף קטגוריה חדשה מותאמת אישית על ידי בחירה בקטגוריה נחוצה אחת או יותר. - איפוס לבררת מחדל יחזיר את הסדר למצב בררת המחדל כמו לאחר ההתקנה. + ניתן להחליף את סדר הרשימה ולהסתיר קטגוריות בלתי נחוצות. אפשר לייבא או לייצא את כל השינויים עם פרופילים. + ניתן להוסיף קטגוריה חדשה מותאמת אישית על ידי בחירה בקטגוריה אחת או יותר. + ‚איפוס לבררת מחדל’ יחזיר את הסדר למצב בררת המחדל כמו בהתקנה. זמין הוספת קטגוריה מותאמת אישית הצגה רק בלילה - כל הגדרות התוסף שוחזרו למצב בררת המחדל. - כל הגדרות הפרופיל אופסו למצב בררת המחדל. + כל הגדרות התוסף שוחזרו לבררת המחדל. + כל הגדרות הפרופיל אופסו לבררת המחדל. %1$s/%2$s שקיעה ב־%1$s זריחה ב־%1$s - מצב הנגישות כבוי ב־Android שלך. + מצב הנגישות כבוי במערכת ה־Android שלך. נא לבחור שם לפרופיל פתיחת ההגדרות התוסף כבוי @@ -3485,8 +3485,8 @@ הזווית המזערית בין המיקום שלי והמסלול המלצה: קשה לחזות מה יוקלט ומה לא, יכול להיות שעדיף לכבות את המסנן הזה. להשתמש בתפוגת שומר המסך של המערכת - מושבת כבררת מחדל, אם OsmAnd מופעל בחזית, המסך לא נכבה. -\n + מושבת כבררת מחדל: בזמן ש־OsmAnd מופעל בחזית, המסך לא יכבה. +\n \nאם פעיל, OsmAnd ישתמש בהגדרות כיבוי המסך של המערכת. • פרופילים: מעתה ניתן לשנות סדר, להגדיר סמל למפה, לשנות את כל ההגדרות לפרופיל הבסיסי ולשחזר אותן לבררות המחדל \n From 953a96c5fd4fb9f26b05c2db3d1a61bbf7fdc194 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Allan=20Nordh=C3=B8y?= Date: Mon, 25 May 2020 06:21:42 +0000 Subject: [PATCH 090/108] =?UTF-8?q?Translated=20using=20Weblate=20(Norwegi?= =?UTF-8?q?an=20Bokm=C3=A5l)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Currently translated at 8.9% (299 of 3341 strings) --- OsmAnd/res/values-nb/strings.xml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/OsmAnd/res/values-nb/strings.xml b/OsmAnd/res/values-nb/strings.xml index 627aa15501..b89931b981 100644 --- a/OsmAnd/res/values-nb/strings.xml +++ b/OsmAnd/res/values-nb/strings.xml @@ -3040,9 +3040,9 @@ Del din tilbakemelding og legg til en vurdering på Google Play. Personvernspraksis Hjelp oss å forbedre OsmAnd - Tillat OsmAnd å samle inn og behandle anonym programbruksdata. Vi samler ikke inn eller lagrer data om din plassering, eller om plasseringer ser på på kartet. + Tillat OsmAnd å samle inn og behandle anonym programbruksdata. Ingen data om din plassering, eller om plasseringer ser på på kartet blir samlet inn. \n -\nDu kan alltid endre ditt valg i Innstillinger > Personvern og sikkerhet. +\nDu kan alltid endre ditt valg i \"Innstillinger\" → \"Personvern og sikkerhet\". Velg hvilken data du ønsker å dele: Nedlastede kart Besøkte skjermer From 1ebd7b35dd6d638016f3bc1049c8d99b1f76a42c Mon Sep 17 00:00:00 2001 From: Ajeje Brazorf Date: Mon, 25 May 2020 14:42:48 +0000 Subject: [PATCH 091/108] Translated using Weblate (Sardinian) Currently translated at 99.6% (3329 of 3341 strings) --- OsmAnd/res/values-sc/strings.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-sc/strings.xml b/OsmAnd/res/values-sc/strings.xml index 01d36698db..fefaf3d7ee 100644 --- a/OsmAnd/res/values-sc/strings.xml +++ b/OsmAnd/res/values-sc/strings.xml @@ -2435,7 +2435,7 @@ Aberi Mapillary Installa Megiora sa cobertura fotogràfica cun Mapillary - Installa Mapillary pro annànghere una o prus fotografias a custa positzione de sa mapa. + Installa Mapillary pro annànghere fotografias a custa positzione de sa mapa. Immàgine de Mapillary Distàntzia curreta Autorizatziones @@ -2496,9 +2496,9 @@ Annanghe puntos a s\'àndala Annanghe una lìnia Annanghe documentos GPX - Importa documentos GPX, o registra rastas. + Importa documentos GPX o registra rastas. Annanghe preferidos - Importa preferidos, o annanghe·los pro mèdiu de marcadores in sa mapa. + Importa preferidos o annanghe·los pro mèdiu de marcadores in sa mapa. Importa unu documentu GPX Su documentu %1$s non cuntenit puntos de coladòrgiu, importare comente rasta? Move puntu @@ -2599,11 +2599,11 @@ Ammustra lìnias diretzionales dae sa positzione tua a sos marcadores ativos. Ammustra una o duas fritzas chi indicant sa diretzione cara a sos marcadores ativos. Issèbera comente ammustrare sa distàntzia cun sos marcadores ativos. - Dislinda su nùmeru de indicadores de diretzione de ammustrare: + Dislinda su nùmeru de indicadores de diretzione. Àteru Chirchende rastas cun puntos de coladòrgiu Crea o modìfica ogetos OSM - Crea o modìfica PDI OSM, aberi o cummenta notas OSM, e contribui cun documentos GPX registrados. + Crea o modìfica PDI OSM, aberi o cummenta sas notas OSM, e contribui cun documentos GPX registrados. Iscantzelladu Modificadu Annantu @@ -2611,7 +2611,7 @@ Incarca in unu marcadore in sa mapa pro lu moere in sa prima positzione in sos marcadores ativos, chene abèrrere su menù contestuale. \'Un\'incarcu\' ativu Piga notas! - Annanghe notas sonoras, vìdeos o fotografias a cada puntu in sa mapa, impreende su widget o su menù contestuale. + Annanghe notas sonoras, vìdeos o fotografias a cada puntu in sa mapa, impreende su widget o sos menùs cuntestuales. Notas sonoras/in vìdeu pro data Pro data Pro casta @@ -3475,8 +3475,8 @@ Impòsitu: est prus difìtzile a intzertare ite at a èssere registradu e ite nono. Diat èssere mègius a istudare custu filtru. Durada de sa memòria tampone (buffer) Torra a ordinare sas categorias - Modìfica s\'òrdine de sa lista e cua sas categorias chi non ti serbint. Podes importare o esportare totu sas modìficas cun sos profilos. - Podes annànghere una categoria personalizada noa ischertende·nde una o unas cantas pagas chi ti serbint. + Modìfica s\'òrdine de sa lista e cua sas categorias. Podes importare o esportare totu sas modìficas cun sos profilos. + Podes annànghere una categoria personalizada noa ischertende·nde una o prus de una. Disponìbile Annanghe una categoria personalizada Ammustra a de note ebbia @@ -3486,7 +3486,7 @@ Intrinada a sas %1$s Arbèschida a sas %1$s Custu at a registrare petzi sos puntos medidos cun un\'acuradesa mìnima indicada (in metros/pees, comente benit sinnaladu dae Android pro su chipset tuo). S\'acuradesa si riferit a sa dispersione de movimentos torrados a repìtere, e no est ligada diretamente a sa pretzisione, chi definit canto sa medida tua est a curtzu a sa positzione bera tua. - Ripristinende sos valores predefinidos as a torrare a impostare s\'istadu predefinidu a pustis de s\'installatzione. + \'Riprìstina sos valores predefinidos\' at a torrare a impostare s\'òrdine predefinidu de installatzione. Sa modalidade de atzessibilidade est istudada in su sistema Android tuo. Imprea su tempus de isetu de s\'ischermu de su sistema Disabilitadu in sas impostatziones predefinidas. Si OsmAnd est traballende in primu pranu, s\'ischermu non s\'at a mòrrere. @@ -3678,7 +3678,7 @@ \n \nPodes amministrare e annullare sos abbonamentos tuos intrende in sas impostatziones de Google Play tuas. Chirca castas de PDI - Cumbina castas de PDI de catogorias diferentes. Incarchende su butone as a ischertare totu, e s\'ala a manca seletzionat una categoria. + Cumbina castas de PDI de catogorias diferentes. Incarca su butone pro ischertare totu, incarca in s\'ala a manca pro ischertare una categoria. %1$s / %2$s Arrastadore de OsmAnd OsmAnd + Mapillary @@ -3715,7 +3715,7 @@ Podes atzèdere a custas atziones incarchende su butone \"%1$s\". Cua su trasportu pùblicu Ammustra su trasportu pùblicu - Ammustra / cua su trasportu pùblicu + Ammustra/cua su trasportu pùblicu Butone pro ammustrare o cuare su trasportu pùblicu in sa mapa. Crea / Modìfica unu PDI Logos de parchègiu From f67e835139c5936dfc3da0db01da6ba20deea461 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Sun, 24 May 2020 22:57:15 +0000 Subject: [PATCH 092/108] Translated using Weblate (Galician) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-gl/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-gl/strings.xml b/OsmAnd/res/values-gl/strings.xml index fef81238d4..948647a0c3 100644 --- a/OsmAnd/res/values-gl/strings.xml +++ b/OsmAnd/res/values-gl/strings.xml @@ -3501,22 +3501,22 @@ Lon %2$s Son do obturador da cámara A autorización foi correcta Reorganizar categorías - Muda a orde de clasificación da listaxe ou agocha as categorías innecesarias. Podes importar ou exportar todos as modificacións cos perfís. - Podes engadir unha nova categoría personalizada marcando unha ou varias categorías necesarias. - Restabelecer ó valor por defecto, restabelecerá a orde de clasificación ó estado por defecto após a instalación. + Mudar a orde de clasificación da listaxe ou agochar categorías. Podes importar ou exportar todas as modificacións cos perfís. + Podes engadir unha nova categoría personalizada marcando unha ou máis categorías. + \'Restabelecer ó valor por defecto\' restabelecerá a orde de clasificación ós valores por defecto da instalación. Dispoñíbel Engadir categoría personalizada Amosar só á noite - Todos os axustes do plugin restabelecéronse ó estado por defecto. - Todos os axustes do perfil restabelecéronse ó estado por defecto. + Todos os axustes do plugin restabelecéronse por defecto. + Todos os axustes do perfil restabelecéronse por defecto. %1$s/%2$s Solpor ás %1$s Amencer ás %1$s - Modo de accesibilidade desactivado no teu Android. + O modo de accesibilidade está desactivado no teu sistema. Empregar o tempo de espera da pantalla do sistema - Desactivado de xeito predefinido, se o OsmAnd é executado en primeiro plano, a pantalla manterase acendida. -\n -\nSe se activa, o OsmAnd empregará os axustes de tempo de espera do sistema. + Desactivado por defecto: mentres o OsmAnd está a executarse en primeiro plano, a pantalla non se apagará. +\n +\nSe está activado, o OsmAnd empregará a configuración de tempo de espera do sistema. Limpar datos gravados • Perfís: agora podes mudar a orde, definir a icona para o mapa, mudar todos os axustes para os perfís base e restabelecelos de novo ó valores por defecto \n @@ -3735,7 +3735,7 @@ Lon %2$s Podes acceder a estas accións premendo no botón “%1$s”. Agochar transporte público Amosar transporte público - Amosar / agochar transporte público + Amosar/agochar transporte público Botón que amosa ou agocha o transporte público no mapa. Crear / Editar PDI Posicións de aparcamento From 824b030778e00d9ea4a9e0a3cd436a4065e0eb92 Mon Sep 17 00:00:00 2001 From: Franco Date: Mon, 25 May 2020 18:34:18 +0000 Subject: [PATCH 093/108] Translated using Weblate (Spanish (Argentina)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-es-rAR/strings.xml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/OsmAnd/res/values-es-rAR/strings.xml b/OsmAnd/res/values-es-rAR/strings.xml index 23460c47da..82859167d8 100644 --- a/OsmAnd/res/values-es-rAR/strings.xml +++ b/OsmAnd/res/values-es-rAR/strings.xml @@ -3483,21 +3483,21 @@ Reproducir sonido al fotografiar Autorización exitosa Reordenar categorías - Cambia el orden de clasificación de la lista u oculta las categorías innecesarias. Puedes importar o exportar todos los cambios con los perfiles. - Puedes añadir una nueva categoría personalizada marcando una o varias categorías necesarias. + Cambia el orden de clasificación de la lista u oculta las categorías. Puedes importar o exportar todos los cambios con los perfiles. + Puedes añadir una nueva categoría personalizada marcando una o varias categorías. Disponible Añadir categoría personalizada Mostrar solo de noche - Todos los ajustes del complemento se restauraron al estado predefinido. - Todos los ajustes del perfil se restauraron al estado predefinido. + Todos los ajustes del complemento se restauraron al valor predefinido. + Todos los ajustes del perfil se restauraron al valor predefinido. %1$s/%2$s Atardecer a las %1$s Amanecer a las %1$s - Restablecer al valor predefinido, restablecerá el orden de clasificación al estado predefinido después de la instalación. + «Restablecer al valor predefinido», restablecerá el orden de clasificación al valor predefinido de la instalación. El modo de accesibilidad se encuentra desactivado en el sistema. Usar el tiempo de espera de la pantalla del sistema - Desactivado de forma predefinida, si OsmAnd se ejecuta en primer plano, la pantalla se mantendrá encendida. -\n + Desactivado de forma predefinida: Mientras OsmAnd se ejecute en primer plano, la pantalla no se apagará. +\n \nSi se activa, OsmAnd utilizará los ajustes de tiempo de espera del sistema. Vaciar datos grabados • Perfiles: ahora puedes cambiar el orden, definir el icono para el mapa, cambiar todos los ajustes para los perfiles base y restaurarlos de nuevo a los valores predefinidos From 89c1de962ff6937f6e2051aad84a5524c1f9d03f Mon Sep 17 00:00:00 2001 From: Eduardo Addad de Oliveira Date: Mon, 25 May 2020 14:57:56 +0000 Subject: [PATCH 094/108] Translated using Weblate (Portuguese (Brazil)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-pt-rBR/strings.xml | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/OsmAnd/res/values-pt-rBR/strings.xml b/OsmAnd/res/values-pt-rBR/strings.xml index b5c6b636f7..ac2770502c 100644 --- a/OsmAnd/res/values-pt-rBR/strings.xml +++ b/OsmAnd/res/values-pt-rBR/strings.xml @@ -3467,21 +3467,21 @@ Pôr do Sol: %2$s Som do obturador da câmera Autorização bem sucedida Reorganizar categorias - Altere a ordem de classificação da lista, oculte categorias desnecessárias. Você pode importar ou exportar todas as alterações com perfis. - Você pode adicionar uma nova categoria personalizada selecionando uma ou algumas categorias necessárias. + Altere a ordem de classificação da lista, oculte as categorias. Você pode importar ou exportar todas as alterações com perfis. + Você pode adicionar uma nova categoria personalizada selecionando uma ou mais categorias. Disponível Adicionar categoria personalizada Mostrar apenas à noite - Todas as configurações de plug-in restauradas para o estado padrão. - Todas as configurações de perfil restauradas para o estado padrão. + Todas as configurações de plug-in restauradas para o padrão. + Todas as configurações de perfil são restauradas para o padrão. %1$s/%2$s Pôr do sol em %1$s Nascer do sol em %1$s - Modo de acessibilidade desativado no seu Android. - Redefinir como padrão redefinirá a ordem de classificação para o estado padrão após a instalação. + O modo de acessibilidade está desativado no seu sistema Android. + \'Redefinir para padrão\' restabelecerá a ordem de classificação para o padrão de instalação. Usar tempo limite da tela do sistema - Desabilitada por padrão, se OsmAnd estiver sendo executado em primeiro plano, a tela não atingirá o tempo limite. -\n + Desabilitado por padrão: Enquanto o OsmAnd estiver sendo executado em primeiro plano, a tela não atingirá o tempo limite +\n \nSe ativado, o OsmAnd usará as configurações de tempo limite do sistema. Limpar dados gravados • Perfis: agora você pode alterar a ordem, definir o ícone para o mapa, alterar todas as configurações dos perfis básicos e restaurá-los para os padrões @@ -3663,7 +3663,7 @@ Pôr do Sol: %2$s \n \n  Você pode gerenciar e cancelar suas assinaturas acessando as configurações do Google Play. Pesquisar tipos de POI - Combine tipos de POI de diferentes categorias. Tocar em \"Alternar\" seleciona tudo e o lado esquerdo seleciona a categoria. + Combine tipos de POI de diferentes categorias. Toque em para selecionar tudo, toque em lado esquerdo para selecionar a categoria. Rastreador do OsmAnd OsmAnd + Mapillary Ação rápida @@ -3698,7 +3698,7 @@ Pôr do Sol: %2$s Você pode acessar essas ações tocando no botão “%1$s”. Ocultar transporte público Mostrar transporte público - Mostrar / ocultar transporte público + Mostrar/ocultar transporte público Botão que mostra ou oculta o transporte público no mapa. Criar / Editar POI Posições de estacionamento From aa349e70cf85ab5e2374526e568d495176b10dd9 Mon Sep 17 00:00:00 2001 From: Onkar Shinde Date: Mon, 25 May 2020 17:57:53 +0000 Subject: [PATCH 095/108] Translated using Weblate (Marathi) Currently translated at 2.8% (108 of 3804 strings) --- OsmAnd/res/values-mr/phrases.xml | 221 ++++++++++++++++--------------- 1 file changed, 113 insertions(+), 108 deletions(-) diff --git a/OsmAnd/res/values-mr/phrases.xml b/OsmAnd/res/values-mr/phrases.xml index b049308fb0..3356b753bb 100644 --- a/OsmAnd/res/values-mr/phrases.xml +++ b/OsmAnd/res/values-mr/phrases.xml @@ -1,108 +1,113 @@ - -दुकान - तातडीची सेवा - सार्वजनिक परिवहन - पाणीपुरवठा - शिक्षण - प्रशासकीय - पर्यटन - बस थांबा - ट्राम थांबा - कार्यालय - विकिपीडिया - पुस्तकालय - परिवहन - रस्त्यतील अडथळा - व्यक्तिगत परिवहन - वायु परिवहन - जल परिवहन - उर्जा - क्रिडा - कला - नैसर्गिक - बेकरी - मद्य - चॉकलेट दुकान - कॉफी दुकान - मॉल - मांस - चहाचे दुकान - वाइन दुकान - - सायकल दुकान - कपड्याचे दुकान - मुलांचे कपडे - कॉम्प्युटर दुकान - पडद्याचे दुकान - फुलांचे दुकान - फर्निचर - ज्युदो - बॅडमिंटन - मायक्रोव्हेव ओवन: हो - मायक्रोव्हेव ओवन: नाही - बिलियर्डस - - खाद्य - आर्थिक - सैन्य - मिठाई - आइसक्रीम पार्लर - चपलांचे दुकान - मेणबत्त्यांचे दुकान - दरवाजे - भेटवस्तूंचे दुकान - वनौषधी दुकान - शिकारीचे साहित्य - दागिन्याचे दुकान - वैद्यकीय पुरवठा - वाद्ये - संगीत दुकान - रंगाचे दुकान - पाळीव प्राण्यांचे दुकान - खेळण्यांचे दुकान - सौंदर्य प्रसाधने - घड्याळांचे दुकान - शस्त्रांचे दुकान - पोलिस - गाव - तालुका - शहर - फटाक्यांचे दुकान - - लांबी - - नेपाळी विकि - गुजराती विकि - पंजाबी विकि - उर्दु विकि - तामिळ विकि - मल्ल्याळम विकि - मराठी विकि - लॅटिन विकि - बंगाली विकि - तापमान - इमारत प्रकार: चर्च - इमारत प्रकार: मशिद - इमारत प्रकार: मंदिर - चौक - खाद्य दुकान - मनुष्य निर्मित - संभाषण - राहण्याची व्यवस्था - क्लब - शेतीमाल दुकान - दुग्धजन्य पदार्थांचे दुकान - इंधन प्रकार - प्रकार - इंटरनेट प्रकार - वाहनतळ प्रकार - राजधानी - धर्म - धूम्रपान - तंबू - वीज पुरवठा - कचरा विल्हेवाट - करमणूक - फोटो स्टुडिओ - - + + + दुकान + तातडीची सेवा + सार्वजनिक परिवहन + पाणीपुरवठा + शिक्षण + प्रशासकीय + पर्यटन + बस थांबा + ट्राम थांबा + कार्यालय + विकिपीडिया + पुस्तकालय + परिवहन + रस्त्यातील अडथळा + व्यक्तिगत परिवहन + वायु परिवहन + जल परिवहन + उर्जा + क्रिडा + कला + नैसर्गिक + बेकरी + मद्य + चॉकलेट दुकान + कॉफी दुकान + मॉल + मांस + चहाचे दुकान + वाइन दुकान + सायकल दुकान + कपड्याचे दुकान + मुलांचे कपडे + कॉम्प्युटर दुकान + पडद्याचे दुकान + फुलांचे दुकान + फर्निचर + ज्युदो + बॅडमिंटन + मायक्रोव्हेव ओवन: हो + मायक्रोव्हेव ओवन: नाही + बिलियर्डस + खाद्य + आर्थिक + सैन्य + मिठाईचे दुकान + आइसक्रीम पार्लर + चपलांचे दुकान + मेणबत्त्यांचे दुकान + दरवाजे + भेटवस्तूंचे दुकान + वनौषधी दुकान + शिकारीचे साहित्य + दागिन्याचे दुकान + वैद्यकीय पुरवठा + वाद्ये + संगीत दुकान + रंगाचे दुकान + पाळीव प्राण्यांचे दुकान + खेळण्यांचे दुकान + सौंदर्य प्रसाधने + घड्याळांचे दुकान + शस्त्रांचे दुकान + पोलिस + गाव + तालुका + शहर + फटाक्यांचे दुकान + लांबी + नेपाळी विकि + गुजराती विकि + पंजाबी विकि + उर्दु विकि + तामिळ विकि + मल्ल्याळम विकि + मराठी विकि + लॅटिन विकि + बंगाली विकि + तापमान + इमारत प्रकार: चर्च + इमारत प्रकार: मशिद + इमारत प्रकार: मंदिर + चौक + खाद्य दुकान + मनुष्य निर्मित + संभाषण + राहण्याची व्यवस्था + क्लब + शेतीमाल दुकान + दुग्धजन्य पदार्थांचे दुकान + इंधन प्रकार + प्रकार + इंटरनेट प्रकार + वाहनतळ प्रकार + राजधानी + धर्म + धूम्रपान + तंबू + वीज पुरवठा + कचरा विल्हेवाट + करमणूक + फोटो स्टुडिओ + पाणी पुरवठा प्रकार + वॉशिंग मशिन + लांबी + आंतरराष्ट्रीय + ग्रीक + जपानी + चीनी + भारतीय + पाण्याचा स्त्रोत + \ No newline at end of file From 939094c1691b23249d64989a668a50f272b6e21b Mon Sep 17 00:00:00 2001 From: Verdulo Date: Mon, 25 May 2020 13:43:24 +0000 Subject: [PATCH 096/108] Translated using Weblate (Esperanto) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-eo/strings.xml | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index 1eb838c465..f36495d2e2 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -1177,7 +1177,7 @@ Trafikcirklo: enveturu %1$d-an elveturejon Veturu je maldekstra koridoro Veturu je dekstra koridoro - Pila nivelo + Nivelo de baterio Movu la mapon por ŝanĝi pozicion de marko Pluranguloj @@ -3054,8 +3054,8 @@ Vi povas aldoni propran modifitan version de la dosiero routing.xml al “..osmand/routing” Skiado Skiado - Montri mezurilon de kompaso - Kaŝi mezurilon de kompaso + Montri kompasrozon + Kaŝi kompasrozon Elekti emblemon Reĝimo: %s Reĝimo de uzanto bazita sur %s @@ -3470,8 +3470,8 @@ Disponeblaj Aldoni propran kategorion Montri nur dum nokto - Rekomencigis ĉiujn agordojn pri kromprogramoj. - Rekomencigis ĉiujn agordojn pri profiloj. + Restarigis ĉiujn agordojn pri kromprogramoj al implicitaj valoroj. + Restarigis ĉiujn agordojn pri profiloj al implicitaj valoroj. %1$s/%2$s Sunsubiro je %1$s Sunleviĝo je %1$s @@ -3480,14 +3480,14 @@ Registrada intertempo Ne povas pritrakti koordinat‑peton “%s”. Reordigi kategoriojn - Ŝanĝi ordigon de la listo, kaŝi malnecesajn kategoriojn. Vi povas enporti aŭ elporti ĉiujn ŝanĝojn kun profiloj. - Vi povas aldoni novan propran kategorion per elekti kelka(j)n bezonata(j)n kategorio(j)n. - Per restarigi implicitajn agordojn, ordigo de elementoj revenos al la postinstalada stato. + Ŝanĝi ordigon de la listo, kaŝi kategoriojn. Vi povas enporti aŭ elporti ĉiujn ŝanĝojn kun profiloj. + Vi povas aldoni novan propran kategorion per elekti unu aŭ pli kategoriojn. + Frapetu “restarigi implicitajn” por ke la ordigo de elementoj revenu al la postinstalada stato. Alirebleca reĝimo malaktivigita en Android. Malŝalti ekranon laŭ sistemaj agordoj - Implicite neaktiva, se OsmAnd laboras malfone, la ekrano ne malŝaltos aŭtomate. -\n -\nAktivigu tion ĉi por ke OsmAnd uzu sisteman agordon pri malŝalti ekranon. + Implicite neaktiva: se OsmAnd laboras malfone, la ekrano ne malŝaltos aŭtomate. +\n +\nAktivigu tion ĉi por ke OsmAnd uzu la sisteman agordon pri malŝalti ekranon. Forviŝi registritajn datumojn • profiloj: eblo ŝanĝi ilian ordigon, agordi emblemon por mapo, ŝanĝi ĉiujn agordojn por bazaj profiloj kaj restarigi implicitajn valorojn \n From acf19697c99009817145fec6d686ed21893a61d4 Mon Sep 17 00:00:00 2001 From: Jeff Huang Date: Mon, 25 May 2020 02:50:43 +0000 Subject: [PATCH 097/108] Translated using Weblate (Chinese (Traditional)) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-zh-rTW/strings.xml | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/OsmAnd/res/values-zh-rTW/strings.xml b/OsmAnd/res/values-zh-rTW/strings.xml index 620eef42b9..e6f2545021 100644 --- a/OsmAnd/res/values-zh-rTW/strings.xml +++ b/OsmAnd/res/values-zh-rTW/strings.xml @@ -3474,21 +3474,21 @@ 相機快門聲 驗證成功 重新排列分類 - 變更清單順序,隱藏不需要的分類。你可以匯入或匯出所有包含變更的設定檔。 - 您可以透過選取一個或多個需要的分類來新增自訂的分類。 + 變更清單順序、隱藏分類。你可以匯入或匯出所有包含變更的設定檔。 + 您可以透過選取一個或多個分類來新增自訂的分類。 可用 新增自訂分類 僅在夜間顯示 - 所有外掛程式設定都已恢復為預設狀態。 - 所有設定檔的設定都已恢復為預設狀態。 + 所有外掛程式設定都已恢復為預設值。 + 所有設定檔的設定都已恢復為預設值。 %1$s/%2$s 日落於 %1$s 日出於 %1$s - 您的 Android 關閉了無障礙模式。 - 重設為預設值將會把排序重設回安裝後的預設值。 + 您的 Android 系統關閉了無障礙模式。 + 「重設為預設值」會將排序恢復為安裝時的預設值。 使用系統畫面逾時 - 預設停用,如果 OsmAnd 在前景執行,畫面就不會有逾時的問題。 -\n + 預設停用:當 OsmAnd 在前景執行時,畫面就不會有逾時的問題。 +\n \n若啟用,OsmAnd 將會使用系統逾時設定。 清除已紀錄的資料 • 設定檔:現在您可以變更順序、設定地圖圖示、變更基本設定檔的所有設定以及將它們復原 From 5cc9752ec24bdab82ab58bc1435ed6474849ab38 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Iv=C3=A1ns?= Date: Sun, 24 May 2020 23:06:26 +0000 Subject: [PATCH 098/108] Translated using Weblate (Galician) Currently translated at 82.7% (221 of 267 strings) Translation: OsmAnd/Telegram Translate-URL: https://hosted.weblate.org/projects/osmand/telegram/gl/ --- OsmAnd-telegram/res/values-gl/strings.xml | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/OsmAnd-telegram/res/values-gl/strings.xml b/OsmAnd-telegram/res/values-gl/strings.xml index c7d9f4cb4e..9e54794229 100644 --- a/OsmAnd-telegram/res/values-gl/strings.xml +++ b/OsmAnd-telegram/res/values-gl/strings.xml @@ -216,4 +216,13 @@ Procura en tódolos teus grupos e contactos. Escribe o nome do contacto ou do grupo Procurar + Estado do Rastrexador do OsmAnd + Suxerido + Voltar ó OsmAnd + hai %1$s + Última resposta: hai %1$s + Última actualización dende o Telegram: hai %1$s + Última resposta: %1$s + Última actualización dende o Telegram: %1$s + ERR \ No newline at end of file From 1df4d0a6dbabd81fa827635bc09806821c53601b Mon Sep 17 00:00:00 2001 From: solokot Date: Mon, 25 May 2020 19:22:42 +0000 Subject: [PATCH 099/108] Translated using Weblate (Russian) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-ru/strings.xml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/OsmAnd/res/values-ru/strings.xml b/OsmAnd/res/values-ru/strings.xml index aaba7e07d4..a4786e862e 100644 --- a/OsmAnd/res/values-ru/strings.xml +++ b/OsmAnd/res/values-ru/strings.xml @@ -455,7 +455,7 @@ Автоцентр просмотра карты во время использования. Маршрут GPX Найдено несколько связанных категорий POI. - Загрузите данные для автономного поиска POI. + Загрузите данные для локального поиска POI. Поиск по имени Данные POI «%1$s» устарели и могут быть удалены. Файл с обновляемыми POI не найден и не может быть создан. @@ -786,12 +786,12 @@ Поиск адреса… Поиск адреса в OSM Nominatim Онлайн поиск: Номер дома, улица, Город - Автономный поиск + Локальный поиск Онлайн поиск Уровень детализации Выберите максимальный масштаб для загрузки тайлов карт из интернета. Общая протяжённость = %1$s, время в пути = %2$d ч. %3$d м. - Онлайн или автономный сервис для прокладки маршрута. + Онлайн или локальный сервис для прокладки маршрута. Прокладка маршрута Папка для хранения данных на SD-карте недоступна! Загрузить {0} — {1}\? @@ -1374,7 +1374,7 @@ Настройки навигации Настройки маршрутизации Грузовик - Автономно рассчитать маршрут OsmAnd + Локально рассчитать маршрут OsmAnd Копирование файлов данных OsmAnd… Скорость произношения Выберите отображаемые профили. @@ -1796,7 +1796,7 @@ Для правильного отображения дорожных знаков и правил, пожалуйста, выберите свой регион вождения: Добро пожаловать Отметить для удаления - OsmAnd обеспечивает глобальный автономный просмотр карт и автономную навигацию. + OsmAnd обеспечивает глобальный локальный просмотр карт и автономную навигацию. OSM изменения добавлены в локальную базу данных Во многих странах (Германия, Франция, Италия и другие) использование предупреждения о камерах контроля скорости не допускается законом. OsmAnd не несёт никакой ответственности, если вы нарушите закон. Пожалуйста, нажмите «Да» только если вы имеете право использовать эту функцию. Информация A-GPS @@ -3512,7 +3512,7 @@ Импорт профиля Навигация, точность ведения журнала Размер изображения, качество звука и видео - Логин, пароль, автономное редактирование + Логин, пароль, локальное редактирование Выберите значок, цвет и имя Позволяет обмениваться текущим местоположением с помощью записи поездки. Онлайн-отслеживание From 90fcbc45305bc39849ba2b80deb1f3fc77ce7cbf Mon Sep 17 00:00:00 2001 From: Ahmad Alfrhood Date: Mon, 25 May 2020 22:35:37 +0000 Subject: [PATCH 100/108] Translated using Weblate (Arabic) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-ar/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-ar/strings.xml b/OsmAnd/res/values-ar/strings.xml index bfd3848ef5..1f9ab4efe2 100644 --- a/OsmAnd/res/values-ar/strings.xml +++ b/OsmAnd/res/values-ar/strings.xml @@ -3471,7 +3471,7 @@ متاح إضافة فئة مخصصة اظهر في الليل فقط - استعادة جميع إعدادات البرنامج المساعد plugin إلى الحالة الافتراضية. + استعادة جميع إعدادات البرنامج المساعد إلى الحالة الافتراضية. تمت استعادة جميع إعدادات الوضع إلى الحالة الافتراضية. %1$s/%2$s غروب الشمس على %1$s From 1fe6b21dc1e8e50e0dbe3b1059801540ab37fe78 Mon Sep 17 00:00:00 2001 From: Verdulo Date: Mon, 25 May 2020 20:59:09 +0000 Subject: [PATCH 101/108] Translated using Weblate (Esperanto) Currently translated at 100.0% (3341 of 3341 strings) --- OsmAnd/res/values-eo/strings.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/OsmAnd/res/values-eo/strings.xml b/OsmAnd/res/values-eo/strings.xml index f36495d2e2..ab63e4c72e 100644 --- a/OsmAnd/res/values-eo/strings.xml +++ b/OsmAnd/res/values-eo/strings.xml @@ -1212,7 +1212,7 @@ Mi estas tie ĉi Senpaga versio Hejmo - Fasada lingvo + Lingvo de aplikaĵo nekompleta Aktivigu la kromprogramon “enretaj mapoj” por elekti aliajn fontojn de mapoj Enretaj kaj kahelaj mapoj From 1985364a2134ccb41bca40f14e80de7baff9f1ff Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 26 May 2020 10:14:17 +0300 Subject: [PATCH 102/108] Add proper icons for FPS widget --- OsmAnd/res/drawable/widget_fps_day.xml | 25 ++++++++++++++++++++++++ OsmAnd/res/drawable/widget_fps_night.xml | 25 ++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 OsmAnd/res/drawable/widget_fps_day.xml create mode 100644 OsmAnd/res/drawable/widget_fps_night.xml diff --git a/OsmAnd/res/drawable/widget_fps_day.xml b/OsmAnd/res/drawable/widget_fps_day.xml new file mode 100644 index 0000000000..53524499ca --- /dev/null +++ b/OsmAnd/res/drawable/widget_fps_day.xml @@ -0,0 +1,25 @@ + + + + + + + diff --git a/OsmAnd/res/drawable/widget_fps_night.xml b/OsmAnd/res/drawable/widget_fps_night.xml new file mode 100644 index 0000000000..4e3836ec82 --- /dev/null +++ b/OsmAnd/res/drawable/widget_fps_night.xml @@ -0,0 +1,25 @@ + + + + + + + From 917270784dc5b72cd326d1b294cb1753cdbc56e0 Mon Sep 17 00:00:00 2001 From: Dima-1 Date: Tue, 26 May 2020 11:44:08 +0300 Subject: [PATCH 103/108] Fix review --- OsmAnd/src/net/osmand/AndroidUtils.java | 6 ++-- .../plus/dashboard/DashFavoritesFragment.java | 29 ++++++++++--------- .../net/osmand/plus/views/MapInfoLayer.java | 6 ++-- 3 files changed, 22 insertions(+), 19 deletions(-) diff --git a/OsmAnd/src/net/osmand/AndroidUtils.java b/OsmAnd/src/net/osmand/AndroidUtils.java index f3b7030d08..3c8eed9206 100644 --- a/OsmAnd/src/net/osmand/AndroidUtils.java +++ b/OsmAnd/src/net/osmand/AndroidUtils.java @@ -379,12 +379,12 @@ public class AndroidUtils { @DrawableRes int iconLightId, @DrawableRes int iconDarkId, @DrawableRes int bgLightId, @DrawableRes int bgDarkId, boolean night) { if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) { - button.setBackground(AppCompatResources.getDrawable(ctx, night ? bgDarkId : bgLightId)); + button.setBackground(ctx.getUIUtilities().getIcon(night ? bgDarkId : bgLightId)); } else { - button.setBackgroundDrawable(AppCompatResources.getDrawable(ctx, night ? bgDarkId : bgLightId)); + button.setBackgroundDrawable(ctx.getUIUtilities().getIcon(night ? bgDarkId : bgLightId)); } int btnSizePx = button.getLayoutParams().height; - int iconSizePx = button.getContext().getResources().getDimensionPixelSize(R.dimen.map_widget_icon); + int iconSizePx = ctx.getResources().getDimensionPixelSize(R.dimen.map_widget_icon); int iconPadding = (btnSizePx - iconSizePx) / 2; button.setPadding(iconPadding, iconPadding, iconPadding, iconPadding); button.setScaleType(ImageView.ScaleType.FIT_CENTER); diff --git a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java index 8ca1c92810..65eeffd8bd 100644 --- a/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java +++ b/OsmAnd/src/net/osmand/plus/dashboard/DashFavoritesFragment.java @@ -1,6 +1,7 @@ package net.osmand.plus.dashboard; import android.graphics.Typeface; +import android.graphics.drawable.Drawable; import android.os.Bundle; import android.view.LayoutInflater; import android.view.View; @@ -96,7 +97,7 @@ public class DashFavoritesFragment extends DashLocationFragment { public void setupFavorites() { View mainView = getView(); - OsmandApplication app = getMyApplication(); + final OsmandApplication app = getMyApplication(); if (mainView == null || app == null) { return; } @@ -112,7 +113,7 @@ public class DashFavoritesFragment extends DashLocationFragment { Collections.sort(points, new Comparator() { @Override public int compare(FavouritePoint point, FavouritePoint point2) { - // LatLon lastKnownMapLocation = getMyApplication().getSettings().getLastKnownMapLocation(); + // LatLon lastKnownMapLocation = app.getSettings().getLastKnownMapLocation(); int dist = (int) (MapUtils.getDistance(point.getLatitude(), point.getLongitude(), loc.getLatitude(), loc.getLongitude())); int dist2 = (int) (MapUtils.getDistance(point2.getLatitude(), point2.getLongitude(), @@ -123,7 +124,7 @@ public class DashFavoritesFragment extends DashLocationFragment { } LinearLayout favorites = (LinearLayout) mainView.findViewById(R.id.items); favorites.removeAllViews(); - DashboardOnMap.handleNumberOfRows(points, getMyApplication().getSettings(), ROW_NUMBER_TAG); + DashboardOnMap.handleNumberOfRows(points, app.getSettings(), ROW_NUMBER_TAG); List distances = new ArrayList(); for (final FavouritePoint point : points) { LayoutInflater inflater = getActivity().getLayoutInflater(); @@ -136,38 +137,40 @@ public class DashFavoritesFragment extends DashLocationFragment { view.findViewById(R.id.divider).setVisibility(View.VISIBLE); ImageView groupImage = (ImageView)view.findViewById(R.id.group_image); if (point.getCategory().length() > 0) { - ((TextView) view.findViewById(R.id.group_name)).setText(point.getCategoryDisplayName(getMyApplication())); - groupImage.setImageDrawable(getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_group_name_16)); + ((TextView) view.findViewById(R.id.group_name)).setText(point.getCategoryDisplayName(app)); + groupImage.setImageDrawable(app.getUIUtilities().getThemedIcon(R.drawable.ic_action_group_name_16)); } else { groupImage.setVisibility(View.GONE); } - ((ImageView) view.findViewById(R.id.favourite_icon)).setImageDrawable(FavoriteImageDrawable.getOrCreate( - getActivity(), app.getFavorites().getColorWithCategory(point, getResources().getColor(R.color.color_favorite)), false, point)); + int iconColor = app.getFavorites().getColorWithCategory(point, getResources().getColor(R.color.color_favorite)); + Drawable favoriteIcon = FavoriteImageDrawable.getOrCreate(app, iconColor, false, point); + ((ImageView) view.findViewById(R.id.favourite_icon)).setImageDrawable(favoriteIcon); DashLocationView dv = new DashLocationView(direction, label, new LatLon(point.getLatitude(), point.getLongitude())); distances.add(dv); - name.setText(point.getDisplayName(getMyApplication())); + name.setText(point.getDisplayName(app)); name.setTypeface(Typeface.DEFAULT, point.isVisible() ? Typeface.NORMAL : Typeface.ITALIC); view.findViewById(R.id.navigate_to).setVisibility(View.VISIBLE); - ((ImageView) view.findViewById(R.id.navigate_to)).setImageDrawable(getMyApplication().getUIUtilities().getThemedIcon(R.drawable.ic_action_gdirections_dark)); + Drawable directionIcon = app.getUIUtilities().getThemedIcon(R.drawable.ic_action_gdirections_dark); + ((ImageView) view.findViewById(R.id.navigate_to)).setImageDrawable(directionIcon); view.findViewById(R.id.navigate_to).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { DirectionsDialogs.directionsToDialogAndLaunchMap(getActivity(), point.getLatitude(), point.getLongitude(), - new PointDescription(PointDescription.POINT_TYPE_FAVORITE, point.getDisplayName(getMyApplication()))); + new PointDescription(PointDescription.POINT_TYPE_FAVORITE, point.getDisplayName(app))); } }); view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - getMyApplication().getSettings().setMapLocationToShow(point.getLatitude(), point.getLongitude(), - 15, new PointDescription(PointDescription.POINT_TYPE_FAVORITE, point.getDisplayName(getMyApplication())), true, - point); //$NON-NLS-1$ + app.getSettings().setMapLocationToShow(point.getLatitude(), point.getLongitude(), + 15, new PointDescription(PointDescription.POINT_TYPE_FAVORITE, point.getDisplayName(app)), + true, point); MapActivity.launchMapActivityMoveToTop(getActivity()); } }); diff --git a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java index a961ea1611..f77a57e550 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapInfoLayer.java @@ -291,9 +291,9 @@ public class MapInfoLayer extends OsmandMapLayer { updateTopToolbar(nightMode); lanesControl.updateTextSize(nightMode, ts.textColor, ts.textShadowColor, ts.textBold, ts.textShadowRadius / 2); rulerControl.updateTextSize(nightMode, ts.textColor, ts.textShadowColor, (int) (2 * view.getDensity())); - int padding = this.expand.getPaddingLeft(); - this.expand.setBackgroundResource(ts.expand); - this.expand.setPadding(padding, padding, padding, padding); + int padding = expand.getPaddingLeft(); + expand.setBackgroundResource(ts.expand); + expand.setPadding(padding, padding, padding, padding); rightStack.invalidate(); leftStack.invalidate(); } From d1e479e9be77f7d4d968d055ebb4ca6c6da3a978 Mon Sep 17 00:00:00 2001 From: vshcherb Date: Tue, 26 May 2020 11:25:08 +0200 Subject: [PATCH 104/108] Update RouteProvider.java --- OsmAnd/src/net/osmand/plus/routing/RouteProvider.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java index 34fd072c85..febfa7aa0b 100644 --- a/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java +++ b/OsmAnd/src/net/osmand/plus/routing/RouteProvider.java @@ -177,9 +177,9 @@ public class RouteProvider { GPXRouteParams res = new GPXRouteParams(); try { res.prepareGPXFile(this); - } catch (Exception e) { - log.error(e); - app.showShortToastMessage(app.getString(R.string.gpx_parse_error)); + } catch (RuntimeException e) { + log.error(e.getMessage(), e); + app.showShortToastMessage(app.getString(R.string.gpx_parse_error) + " " + e.getMessage()); } return res; } From 6f5a4d5bba7e627d7978a3f9baac19300479beaa Mon Sep 17 00:00:00 2001 From: Vitaliy Date: Tue, 26 May 2020 12:27:27 +0300 Subject: [PATCH 105/108] Fix possible npe --- OsmAnd/src/net/osmand/plus/AppInitializer.java | 2 +- .../src/net/osmand/plus/views/MapQuickActionLayer.java | 10 +++++++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/AppInitializer.java b/OsmAnd/src/net/osmand/plus/AppInitializer.java index f09785122e..c39fe3a9d5 100644 --- a/OsmAnd/src/net/osmand/plus/AppInitializer.java +++ b/OsmAnd/src/net/osmand/plus/AppInitializer.java @@ -554,7 +554,7 @@ public class AppInitializer implements IProgress { customConfigs.put(fileName, builder); } catch (XmlPullParserException | IOException e) { Algorithms.removeAllFiles(f); - LOG.error(e); + LOG.error(e.getMessage(), e); } } } diff --git a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java index 33344bcf3a..c425e1774d 100644 --- a/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java +++ b/OsmAnd/src/net/osmand/plus/views/MapQuickActionLayer.java @@ -394,9 +394,13 @@ public class MapQuickActionLayer extends OsmandMapLayer implements QuickActionRe contextMarker.draw(canvas); } if (this.nightMode != nightMode) { - this.nightMode = nightMode; - updateQuickActionButton(currentWidgetState != null && currentWidgetState); - } + this.nightMode = nightMode; + boolean widgetVisible = false; + if (currentWidgetState != null) { + widgetVisible = currentWidgetState; + } + updateQuickActionButton(widgetVisible); + } setupQuickActionBtnVisibility(); } From b48a516dd8a6a755fafc0f0fe9bb57a3026e5b6b Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 26 May 2020 15:15:53 +0200 Subject: [PATCH 106/108] Fix security exception --- .../net/osmand/plus/helpers/ImportHelper.java | 98 +++++++++---------- .../plus/myplaces/FavoritesActivity.java | 2 +- 2 files changed, 49 insertions(+), 51 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java index 96914f4e13..ba8e105ad0 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java @@ -9,7 +9,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.os.ParcelFileDescriptor; import android.provider.OpenableColumns; import android.provider.Settings; import android.widget.Toast; @@ -60,7 +59,6 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -165,7 +163,7 @@ public class ImportHelper { return false; } - public void handleFavouritesImport(@NonNull Uri uri) { + public void handleGpxOrFavouritesImport(@NonNull Uri uri) { String scheme = uri.getScheme(); boolean isFileIntent = "file".equals(scheme); boolean isContentIntent = "content".equals(scheme); @@ -177,7 +175,7 @@ public class ImportHelper { } else if (isContentIntent) { fileName = getNameFromContentUri(app, uri); } - handleFavouritesImport(uri, fileName, saveFile, false, true); + handleGpxOrFavouritesImport(uri, fileName, saveFile, false, true); } public void handleFileImport(Uri intentUri, String fileName, Bundle extras, boolean useImportDir) { @@ -186,40 +184,48 @@ public class ImportHelper { final boolean saveFile = !isFileIntent || !isOsmandSubdir; - if (fileName != null && fileName.endsWith(KML_SUFFIX)) { + if (fileName == null) { + handleGpxOrFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); + } else if (fileName.endsWith(KML_SUFFIX)) { handleKmlImport(intentUri, fileName, saveFile, useImportDir); - } else if (fileName != null && fileName.endsWith(KMZ_SUFFIX)) { + } else if (fileName.endsWith(KMZ_SUFFIX)) { handleKmzImport(intentUri, fileName, saveFile, useImportDir); - } else if (fileName != null && fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) { + } else if (fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) { handleObfImport(intentUri, fileName); - } else if (fileName != null && fileName.endsWith(IndexConstants.SQLITE_EXT)) { + } else if (fileName.endsWith(IndexConstants.SQLITE_EXT)) { handleSqliteTileImport(intentUri, fileName); - } else if (fileName != null && fileName.endsWith(OSMAND_SETTINGS_FILE_EXT)) { + } else if (fileName.endsWith(OSMAND_SETTINGS_FILE_EXT)) { handleOsmAndSettingsImport(intentUri, fileName, extras, null); - } else if (fileName != null && fileName.endsWith(ROUTING_FILE_EXT)) { + } else if (fileName.endsWith(ROUTING_FILE_EXT)) { handleXmlFileImport(intentUri, fileName, null); } else { - handleFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); + handleGpxOrFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); } } public static String getNameFromContentUri(OsmandApplication app, Uri contentUri) { - final String name; - final Cursor returnCursor = app.getContentResolver().query(contentUri, new String[] {OpenableColumns.DISPLAY_NAME}, null, null, null); - if (returnCursor != null && returnCursor.moveToFirst()) { - int columnIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); - if (columnIndex != -1) { - name = returnCursor.getString(columnIndex); + try { + final String name; + final Cursor returnCursor = app.getContentResolver().query(contentUri, new String[]{OpenableColumns.DISPLAY_NAME}, null, null, null); + if (returnCursor != null && returnCursor.moveToFirst()) { + int columnIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); + if (columnIndex != -1) { + name = returnCursor.getString(columnIndex); + } else { + name = contentUri.getLastPathSegment(); + } } else { - name = contentUri.getLastPathSegment(); + name = null; } - } else { - name = null; + if (returnCursor != null && !returnCursor.isClosed()) { + returnCursor.close(); + } + return name; + } catch (RuntimeException e) { + log.error(e.getMessage(), e); + return null; } - if (returnCursor != null && !returnCursor.isClosed()) { - returnCursor.close(); - } - return name; + } @SuppressLint("StaticFieldLeak") @@ -236,10 +242,8 @@ public class ImportHelper { protected GPXFile doInBackground(Void... nothing) { InputStream is = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(gpxFile, "r"); - - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(gpxFile); + if (is != null) { return GPXUtilities.loadGPXFile(is); } } catch (FileNotFoundException e) { @@ -264,7 +268,7 @@ public class ImportHelper { } @SuppressLint("StaticFieldLeak") - private void handleFavouritesImport(final Uri fileUri, final String fileName, final boolean save, final boolean useImportDir, final boolean forceImportFavourites) { + private void handleGpxOrFavouritesImport(final Uri fileUri, final String fileName, final boolean save, final boolean useImportDir, final boolean forceImportFavourites) { new AsyncTask() { ProgressDialog progress = null; @@ -278,10 +282,8 @@ public class ImportHelper { InputStream is = null; ZipInputStream zis = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(fileUri, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); - + is = app.getContentResolver().openInputStream(fileUri); + if (is != null) { if (fileName != null && fileName.endsWith(KML_SUFFIX)) { final String result = Kml2Gpx.toGpx(is); if (result != null) { @@ -331,7 +333,7 @@ public class ImportHelper { progress.dismiss(); } - importFavourites(result, fileName, save, useImportDir, forceImportFavourites); + importGpxOrFavourites(result, fileName, save, useImportDir, forceImportFavourites); } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -394,9 +396,8 @@ public class ImportHelper { InputStream is = null; ZipInputStream zis = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(kmzFile, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(kmzFile); + if (is != null) { zis = new ZipInputStream(is); zis.getNextEntry(); final String result = Kml2Gpx.toGpx(zis); @@ -449,9 +450,8 @@ public class ImportHelper { protected GPXFile doInBackground(Void... nothing) { InputStream is = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(kmlFile, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(kmlFile); + if (is != null) { final String result = Kml2Gpx.toGpx(is); if (result != null) { try { @@ -533,13 +533,12 @@ public class ImportHelper { InputStream in = null; OutputStream out = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(uri, "r"); - if (pFD != null) { - in = new FileInputStream(pFD.getFileDescriptor()); + in = app.getContentResolver().openInputStream(uri); + if (in != null) { out = new FileOutputStream(dest); Algorithms.streamCopy(in, out); try { - pFD.close(); + in.close(); } catch (IOException e) { e.printStackTrace(); } @@ -893,9 +892,8 @@ public class ImportHelper { private void checkImportType() { InputStream is = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(intentUri, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(intentUri); + if (is != null) { XmlPullParser parser = PlatformUtil.newXMLPullParser(); parser.setInput(is, "UTF-8"); int tok; @@ -911,7 +909,7 @@ public class ImportHelper { } } try { - pFD.close(); + is.close(); } catch (IOException e) { log.error(e); } @@ -1101,8 +1099,8 @@ public class ImportHelper { } } - private void importFavourites(final GPXFile gpxFile, final String fileName, final boolean save, - final boolean useImportDir, final boolean forceImportFavourites) { + private void importGpxOrFavourites(final GPXFile gpxFile, final String fileName, final boolean save, + final boolean useImportDir, final boolean forceImportFavourites) { if (gpxFile == null || gpxFile.isPointsEmpty()) { if (forceImportFavourites) { final DialogInterface.OnClickListener importAsTrackListener = new DialogInterface.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java index e56916bff0..5022942bf8 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java @@ -155,7 +155,7 @@ public class FavoritesActivity extends TabActivity { } } else if (requestCode == IMPORT_FAVOURITES_REQUEST && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { - importHelper.handleFavouritesImport(data.getData()); + importHelper.handleGpxOrFavouritesImport(data.getData()); } } else { super.onActivityResult(requestCode, resultCode, data); From fd9f87ba1df693477f08e7cac2fbd69c3aadf488 Mon Sep 17 00:00:00 2001 From: Victor Shcherb Date: Tue, 26 May 2020 15:15:53 +0200 Subject: [PATCH 107/108] Fix security exception --- .../net/osmand/plus/helpers/ImportHelper.java | 98 +++++++++---------- .../plus/myplaces/FavoritesActivity.java | 2 +- 2 files changed, 49 insertions(+), 51 deletions(-) diff --git a/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java b/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java index 96914f4e13..ba8e105ad0 100644 --- a/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java +++ b/OsmAnd/src/net/osmand/plus/helpers/ImportHelper.java @@ -9,7 +9,6 @@ import android.net.Uri; import android.os.AsyncTask; import android.os.Build; import android.os.Bundle; -import android.os.ParcelFileDescriptor; import android.provider.OpenableColumns; import android.provider.Settings; import android.widget.Toast; @@ -60,7 +59,6 @@ import org.xmlpull.v1.XmlPullParserException; import java.io.ByteArrayInputStream; import java.io.File; -import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -165,7 +163,7 @@ public class ImportHelper { return false; } - public void handleFavouritesImport(@NonNull Uri uri) { + public void handleGpxOrFavouritesImport(@NonNull Uri uri) { String scheme = uri.getScheme(); boolean isFileIntent = "file".equals(scheme); boolean isContentIntent = "content".equals(scheme); @@ -177,7 +175,7 @@ public class ImportHelper { } else if (isContentIntent) { fileName = getNameFromContentUri(app, uri); } - handleFavouritesImport(uri, fileName, saveFile, false, true); + handleGpxOrFavouritesImport(uri, fileName, saveFile, false, true); } public void handleFileImport(Uri intentUri, String fileName, Bundle extras, boolean useImportDir) { @@ -186,40 +184,48 @@ public class ImportHelper { final boolean saveFile = !isFileIntent || !isOsmandSubdir; - if (fileName != null && fileName.endsWith(KML_SUFFIX)) { + if (fileName == null) { + handleGpxOrFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); + } else if (fileName.endsWith(KML_SUFFIX)) { handleKmlImport(intentUri, fileName, saveFile, useImportDir); - } else if (fileName != null && fileName.endsWith(KMZ_SUFFIX)) { + } else if (fileName.endsWith(KMZ_SUFFIX)) { handleKmzImport(intentUri, fileName, saveFile, useImportDir); - } else if (fileName != null && fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) { + } else if (fileName.endsWith(IndexConstants.BINARY_MAP_INDEX_EXT)) { handleObfImport(intentUri, fileName); - } else if (fileName != null && fileName.endsWith(IndexConstants.SQLITE_EXT)) { + } else if (fileName.endsWith(IndexConstants.SQLITE_EXT)) { handleSqliteTileImport(intentUri, fileName); - } else if (fileName != null && fileName.endsWith(OSMAND_SETTINGS_FILE_EXT)) { + } else if (fileName.endsWith(OSMAND_SETTINGS_FILE_EXT)) { handleOsmAndSettingsImport(intentUri, fileName, extras, null); - } else if (fileName != null && fileName.endsWith(ROUTING_FILE_EXT)) { + } else if (fileName.endsWith(ROUTING_FILE_EXT)) { handleXmlFileImport(intentUri, fileName, null); } else { - handleFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); + handleGpxOrFavouritesImport(intentUri, fileName, saveFile, useImportDir, false); } } public static String getNameFromContentUri(OsmandApplication app, Uri contentUri) { - final String name; - final Cursor returnCursor = app.getContentResolver().query(contentUri, new String[] {OpenableColumns.DISPLAY_NAME}, null, null, null); - if (returnCursor != null && returnCursor.moveToFirst()) { - int columnIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); - if (columnIndex != -1) { - name = returnCursor.getString(columnIndex); + try { + final String name; + final Cursor returnCursor = app.getContentResolver().query(contentUri, new String[]{OpenableColumns.DISPLAY_NAME}, null, null, null); + if (returnCursor != null && returnCursor.moveToFirst()) { + int columnIndex = returnCursor.getColumnIndex(OpenableColumns.DISPLAY_NAME); + if (columnIndex != -1) { + name = returnCursor.getString(columnIndex); + } else { + name = contentUri.getLastPathSegment(); + } } else { - name = contentUri.getLastPathSegment(); + name = null; } - } else { - name = null; + if (returnCursor != null && !returnCursor.isClosed()) { + returnCursor.close(); + } + return name; + } catch (RuntimeException e) { + log.error(e.getMessage(), e); + return null; } - if (returnCursor != null && !returnCursor.isClosed()) { - returnCursor.close(); - } - return name; + } @SuppressLint("StaticFieldLeak") @@ -236,10 +242,8 @@ public class ImportHelper { protected GPXFile doInBackground(Void... nothing) { InputStream is = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(gpxFile, "r"); - - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(gpxFile); + if (is != null) { return GPXUtilities.loadGPXFile(is); } } catch (FileNotFoundException e) { @@ -264,7 +268,7 @@ public class ImportHelper { } @SuppressLint("StaticFieldLeak") - private void handleFavouritesImport(final Uri fileUri, final String fileName, final boolean save, final boolean useImportDir, final boolean forceImportFavourites) { + private void handleGpxOrFavouritesImport(final Uri fileUri, final String fileName, final boolean save, final boolean useImportDir, final boolean forceImportFavourites) { new AsyncTask() { ProgressDialog progress = null; @@ -278,10 +282,8 @@ public class ImportHelper { InputStream is = null; ZipInputStream zis = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(fileUri, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); - + is = app.getContentResolver().openInputStream(fileUri); + if (is != null) { if (fileName != null && fileName.endsWith(KML_SUFFIX)) { final String result = Kml2Gpx.toGpx(is); if (result != null) { @@ -331,7 +333,7 @@ public class ImportHelper { progress.dismiss(); } - importFavourites(result, fileName, save, useImportDir, forceImportFavourites); + importGpxOrFavourites(result, fileName, save, useImportDir, forceImportFavourites); } }.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); } @@ -394,9 +396,8 @@ public class ImportHelper { InputStream is = null; ZipInputStream zis = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(kmzFile, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(kmzFile); + if (is != null) { zis = new ZipInputStream(is); zis.getNextEntry(); final String result = Kml2Gpx.toGpx(zis); @@ -449,9 +450,8 @@ public class ImportHelper { protected GPXFile doInBackground(Void... nothing) { InputStream is = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(kmlFile, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(kmlFile); + if (is != null) { final String result = Kml2Gpx.toGpx(is); if (result != null) { try { @@ -533,13 +533,12 @@ public class ImportHelper { InputStream in = null; OutputStream out = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(uri, "r"); - if (pFD != null) { - in = new FileInputStream(pFD.getFileDescriptor()); + in = app.getContentResolver().openInputStream(uri); + if (in != null) { out = new FileOutputStream(dest); Algorithms.streamCopy(in, out); try { - pFD.close(); + in.close(); } catch (IOException e) { e.printStackTrace(); } @@ -893,9 +892,8 @@ public class ImportHelper { private void checkImportType() { InputStream is = null; try { - final ParcelFileDescriptor pFD = app.getContentResolver().openFileDescriptor(intentUri, "r"); - if (pFD != null) { - is = new FileInputStream(pFD.getFileDescriptor()); + is = app.getContentResolver().openInputStream(intentUri); + if (is != null) { XmlPullParser parser = PlatformUtil.newXMLPullParser(); parser.setInput(is, "UTF-8"); int tok; @@ -911,7 +909,7 @@ public class ImportHelper { } } try { - pFD.close(); + is.close(); } catch (IOException e) { log.error(e); } @@ -1101,8 +1099,8 @@ public class ImportHelper { } } - private void importFavourites(final GPXFile gpxFile, final String fileName, final boolean save, - final boolean useImportDir, final boolean forceImportFavourites) { + private void importGpxOrFavourites(final GPXFile gpxFile, final String fileName, final boolean save, + final boolean useImportDir, final boolean forceImportFavourites) { if (gpxFile == null || gpxFile.isPointsEmpty()) { if (forceImportFavourites) { final DialogInterface.OnClickListener importAsTrackListener = new DialogInterface.OnClickListener() { diff --git a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java index e56916bff0..5022942bf8 100644 --- a/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java +++ b/OsmAnd/src/net/osmand/plus/myplaces/FavoritesActivity.java @@ -155,7 +155,7 @@ public class FavoritesActivity extends TabActivity { } } else if (requestCode == IMPORT_FAVOURITES_REQUEST && resultCode == Activity.RESULT_OK) { if (data != null && data.getData() != null) { - importHelper.handleFavouritesImport(data.getData()); + importHelper.handleGpxOrFavouritesImport(data.getData()); } } else { super.onActivityResult(requestCode, resultCode, data); From db102c41b6163d55f9ebe3531fb8c215459e4323 Mon Sep 17 00:00:00 2001 From: Dmitry Date: Tue, 26 May 2020 17:11:59 +0300 Subject: [PATCH 108/108] Add icons for Screen settings --- .../res/drawable/ic_action_external_link.xml | 14 +++++++++++++ .../ic_action_notification_navigation.xml | 20 +++++++++++++++++++ .../res/drawable/ic_action_power_button.xml | 19 ++++++++++++++++++ 3 files changed, 53 insertions(+) create mode 100644 OsmAnd/res/drawable/ic_action_external_link.xml create mode 100644 OsmAnd/res/drawable/ic_action_notification_navigation.xml create mode 100644 OsmAnd/res/drawable/ic_action_power_button.xml diff --git a/OsmAnd/res/drawable/ic_action_external_link.xml b/OsmAnd/res/drawable/ic_action_external_link.xml new file mode 100644 index 0000000000..b445171abc --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_external_link.xml @@ -0,0 +1,14 @@ + + + + diff --git a/OsmAnd/res/drawable/ic_action_notification_navigation.xml b/OsmAnd/res/drawable/ic_action_notification_navigation.xml new file mode 100644 index 0000000000..1901192493 --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_notification_navigation.xml @@ -0,0 +1,20 @@ + + + + + diff --git a/OsmAnd/res/drawable/ic_action_power_button.xml b/OsmAnd/res/drawable/ic_action_power_button.xml new file mode 100644 index 0000000000..6e88c236a6 --- /dev/null +++ b/OsmAnd/res/drawable/ic_action_power_button.xml @@ -0,0 +1,19 @@ + + + + +