diff --git a/vtm-android-example/AndroidManifest.xml b/vtm-android-example/AndroidManifest.xml
index c29d8476a..4ea4eb664 100644
--- a/vtm-android-example/AndroidManifest.xml
+++ b/vtm-android-example/AndroidManifest.xml
@@ -105,12 +105,6 @@
-
-
diff --git a/vtm-android-example/build.gradle b/vtm-android-example/build.gradle
index 3029006db..2f7942ea5 100644
--- a/vtm-android-example/build.gradle
+++ b/vtm-android-example/build.gradle
@@ -17,9 +17,6 @@ dependencies {
//implementation project(':vtm-gdx-poi3d')
implementation "com.github.mapsforge.mapsforge:mapsforge-map-android:$mapsforgeVersion@jar"
- implementation "com.github.mapsforge.mapsforge:mapsforge-poi:$mapsforgeVersion@jar"
- implementation "com.github.mapsforge.mapsforge:mapsforge-poi-android:$mapsforgeVersion@jar"
- implementation 'androidx.sqlite:sqlite-bundled:2.7.0'
}
android {
diff --git a/vtm-android-example/res/layout/activity_map_poi.xml b/vtm-android-example/res/layout/activity_map_poi.xml
deleted file mode 100644
index 7e8832555..000000000
--- a/vtm-android-example/res/layout/activity_map_poi.xml
+++ /dev/null
@@ -1,58 +0,0 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vtm-android-example/res/layout/item_poi_search.xml b/vtm-android-example/res/layout/item_poi_search.xml
deleted file mode 100644
index f19d9059d..000000000
--- a/vtm-android-example/res/layout/item_poi_search.xml
+++ /dev/null
@@ -1,31 +0,0 @@
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/vtm-android-example/res/values/strings.xml b/vtm-android-example/res/values/strings.xml
index cfc8ff3a3..50674e633 100644
--- a/vtm-android-example/res/values/strings.xml
+++ b/vtm-android-example/res/values/strings.xml
@@ -18,15 +18,9 @@
Grid
Reverse Geocoding
Select a theme
- Add
- Cancel
Error
The selected file is invalid.
OK
- Remove
- Search
- \'*\' or OSM key
- void or value
Now
Warning
To run this sample activity, you need an MBTiles database installed on storage.
diff --git a/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java b/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java
deleted file mode 100644
index f6cd2ebd0..000000000
--- a/vtm-android-example/src/org/oscim/android/test/PoiSearchActivity.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- * Copyright 2017-2020 devemux86
- * Copyright 2018 Gustl22
- *
- * This program is free software: you can redistribute it and/or modify it under the
- * terms of the GNU Lesser General Public License as published by the Free Software
- * Foundation, either version 3 of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
- * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public License along with
- * this program. If not, see .
- */
-package org.oscim.android.test;
-
-import android.content.Context;
-import android.content.Intent;
-import android.graphics.BitmapFactory;
-import android.os.Bundle;
-import android.text.Editable;
-import android.text.TextWatcher;
-import android.view.LayoutInflater;
-import android.view.Menu;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.*;
-import org.mapsforge.core.model.Tag;
-import org.mapsforge.poi.android.storage.AndroidPoiPersistenceManagerFactory;
-import org.mapsforge.poi.storage.*;
-import org.oscim.android.canvas.AndroidBitmap;
-import org.oscim.android.filepicker.FilePicker;
-import org.oscim.android.filepicker.FilterByFileExtension;
-import org.oscim.backend.canvas.Bitmap;
-import org.oscim.core.BoundingBox;
-import org.oscim.core.GeoPoint;
-import org.oscim.event.Gesture;
-import org.oscim.event.GestureListener;
-import org.oscim.event.MotionEvent;
-import org.oscim.layers.Layer;
-import org.oscim.layers.marker.ItemizedLayer;
-import org.oscim.layers.marker.MarkerInterface;
-import org.oscim.layers.marker.MarkerItem;
-import org.oscim.layers.marker.MarkerSymbol;
-import org.oscim.map.Map;
-
-import java.lang.ref.WeakReference;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-import java.util.logging.Logger;
-
-/**
- * POI search.
- * Long press on map to search inside visible bounding box.
- * Tap on POIs to show their name (in default locale).
- */
-@SuppressWarnings("deprecation")
-public class PoiSearchActivity extends MapsforgeActivity implements ItemizedLayer.OnItemGestureListener {
-
- private static final Logger log = Logger.getLogger(PoiSearchActivity.class.getName());
-
- private static final String POI_CATEGORY = "Restaurants";
- private static final int SELECT_POI_FILE = MapsforgeActivity.SELECT_THEME_FILE + 1;
-
- private ItemizedLayer mMarkerLayer;
- private PoiPersistenceManager mPersistenceManager;
-
- public static class PoiFilePicker extends FilePicker {
- public PoiFilePicker() {
- setFileDisplayFilter(new FilterByFileExtension(".poi"));
- }
- }
-
- public PoiSearchActivity() {
- super(false, R.layout.activity_map_poi);
- }
-
- private void initSearch() {
- final List searchPatterns = new ArrayList<>();
-
- final PatternAdapter adapter = new PatternAdapter(this, searchPatterns);
- ListView searchList = findViewById(R.id.search_list);
- searchList.setAdapter(adapter);
-
- Button addItem = findViewById(R.id.add_item);
- addItem.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- searchPatterns.add(new Pattern("", ""));
- adapter.notifyDataSetChanged();
- }
- });
-
- Button startSearch = findViewById(R.id.start_search);
- startSearch.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // Clear overlays
- mMarkerLayer.removeAllItems();
- mMap.render();
-
- // POI search
- List tags = new ArrayList<>();
- for (Pattern pattern : searchPatterns)
- tags.add(new Tag(pattern.key, pattern.val));
- new PoiSearchTask(PoiSearchActivity.this, null, tags).execute(mMap.getBoundingBox(0));
- }
- });
- }
-
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
-
- initSearch();
-
- // Map events receiver
- mMap.layers().add(new PoiSearchActivity.MapEventsReceiver(mMap));
- }
-
- @Override
- protected void onDestroy() {
- if (mPersistenceManager != null)
- mPersistenceManager.close();
-
- super.onDestroy();
- }
-
- @Override
- public boolean onCreateOptionsMenu(Menu menu) {
- return false;
- }
-
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent intent) {
- super.onActivityResult(requestCode, resultCode, intent);
-
- if (requestCode == SELECT_MAP_FILE) {
- if (mTileLayer.getTileSource() != null)
- startActivityForResult(new Intent(this, PoiFilePicker.class),
- SELECT_POI_FILE);
- else
- finish();
- } else if (requestCode == SELECT_POI_FILE) {
- if (resultCode != RESULT_OK || intent == null || intent.getStringExtra(FilePicker.SELECTED_FILE) == null) {
- finish();
- return;
- }
-
- String file = intent.getStringExtra(FilePicker.SELECTED_FILE);
- mPersistenceManager = AndroidPoiPersistenceManagerFactory.getPoiPersistenceManager(file);
-
- Bitmap bitmap = new AndroidBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.marker_green));
- MarkerSymbol symbol = new MarkerSymbol(bitmap, MarkerSymbol.HotspotPlace.BOTTOM_CENTER);
- mMarkerLayer = new ItemizedLayer(mMap, new ArrayList<>(), symbol, this);
- mMap.layers().add(mMarkerLayer);
- }
- }
-
- @Override
- public boolean onItemSingleTapUp(int index, MarkerInterface item) {
- MarkerItem markerItem = (MarkerItem) item;
- if (markerItem.getTitle() != null && !markerItem.getTitle().isEmpty())
- Toast.makeText(this, markerItem.getTitle(), Toast.LENGTH_SHORT).show();
- return true;
- }
-
- @Override
- public boolean onItemLongPress(int index, MarkerInterface item) {
- return false;
- }
-
- public void onToggleControls(View view) {
- findViewById(R.id.controls).setVisibility(((ToggleButton) view).isChecked() ?
- View.VISIBLE : View.GONE);
- }
-
- private class MapEventsReceiver extends Layer implements GestureListener {
-
- MapEventsReceiver(Map map) {
- super(map);
- }
-
- @Override
- public boolean onGesture(Gesture g, MotionEvent e) {
- if (g instanceof Gesture.LongPress) {
- // Clear overlays
- mMarkerLayer.removeAllItems();
- mMap.render();
- // POI search
- new PoiSearchTask(PoiSearchActivity.this, POI_CATEGORY, null).execute(mMap.getBoundingBox(0));
- return true;
- }
- return false;
- }
- }
-
- private static class Pattern {
- String key;
- String val;
-
- Pattern(String key, String val) {
- this.key = key;
- this.val = val;
- }
- }
-
- private static class PatternAdapter extends ArrayAdapter {
- PatternAdapter(Context context, List patterns) {
- super(context, 0, patterns);
- }
-
- @Override
- public View getView(int position, View convertView, ViewGroup parent) {
- Pattern pattern = getItem(position);
- assert pattern != null;
- // Check if an existing view is being reused, otherwise inflate the view
- if (convertView == null)
- convertView = LayoutInflater.from(getContext()).inflate(R.layout.item_poi_search, parent, false);
-
- // Populate the data
- EditText etKey = convertView.findViewById(R.id.key);
- etKey.removeTextChangedListener((PatternTextWatcher) etKey.getTag()); // remove previous listeners
- etKey.setText(pattern.key); // set text when no listener is attached
- PatternTextWatcher ptwKey = new PatternTextWatcher(pattern, true);
- etKey.setTag(ptwKey);
- etKey.addTextChangedListener(ptwKey);
-
- EditText etValue = convertView.findViewById(R.id.value);
- etValue.removeTextChangedListener((PatternTextWatcher) etValue.getTag());
- etValue.setText(pattern.val);
- PatternTextWatcher ptwVal = new PatternTextWatcher(pattern, false);
- etValue.setTag(ptwVal);
- etValue.addTextChangedListener(ptwVal);
-
- Button remove = convertView.findViewById(R.id.remove);
- remove.setTag(pattern);
- remove.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- Pattern pat = (Pattern) v.getTag();
- remove(pat);
- }
- });
-
- return convertView;
- }
- }
-
- private static class PatternTextWatcher implements TextWatcher {
- private final Pattern pattern;
- private final boolean isKey;
-
- PatternTextWatcher(Pattern pattern, boolean isKey) {
- this.pattern = pattern;
- this.isKey = isKey;
- }
-
- @Override
- public void afterTextChanged(Editable s) {
- }
-
- @Override
- public void beforeTextChanged(CharSequence s, int start, int count, int after) {
- }
-
- @Override
- public void onTextChanged(CharSequence s, int start, int before, int count) {
- if (isKey)
- pattern.key = s.toString();
- else
- pattern.val = s.toString();
- }
- }
-
- private class PoiSearchTask extends android.os.AsyncTask> {
- private final WeakReference weakActivity;
- private final String category;
- private final List patterns;
-
- private PoiSearchTask(PoiSearchActivity activity, String category, List patterns) {
- this.weakActivity = new WeakReference<>(activity);
- this.category = category;
- this.patterns = patterns;
- }
-
- @Override
- protected Collection doInBackground(BoundingBox... params) {
- // Search POI
- try {
- PoiCategoryManager categoryManager = mPersistenceManager.getCategoryManager();
- PoiCategoryFilter categoryFilter = new ExactMatchPoiCategoryFilter();
- if (category != null)
- categoryFilter.addCategory(categoryManager.getPoiCategoryByTitle(category));
- org.mapsforge.core.model.BoundingBox bb = new org.mapsforge.core.model.BoundingBox(
- params[0].getMinLatitude(), params[0].getMinLongitude(),
- params[0].getMaxLatitude(), params[0].getMaxLongitude());
- return mPersistenceManager.findInRect(bb, categoryFilter, patterns, false, null, -1, false);
- } catch (Throwable t) {
- log.severe(t.toString());
- }
- return null;
- }
-
- @Override
- protected void onPostExecute(Collection pointOfInterests) {
- PoiSearchActivity activity = weakActivity.get();
- if (activity == null) {
- return;
- }
- Toast.makeText(activity, (category != null ? category : "Results") + ": "
- + (pointOfInterests != null ? pointOfInterests.size() : 0), Toast.LENGTH_SHORT).show();
- if (pointOfInterests == null) {
- return;
- }
-
- // Overlay POI
- List pts = new ArrayList<>();
- for (PointOfInterest pointOfInterest : pointOfInterests)
- pts.add(new MarkerItem(pointOfInterest.getName(), "", new GeoPoint(pointOfInterest.getLatitude(), pointOfInterest.getLongitude())));
- mMarkerLayer.addItems(pts);
- mMap.render();
- }
- }
-}
diff --git a/vtm-android-example/src/org/oscim/android/test/Samples.java b/vtm-android-example/src/org/oscim/android/test/Samples.java
index f973cbd81..92c4b3b92 100644
--- a/vtm-android-example/src/org/oscim/android/test/Samples.java
+++ b/vtm-android-example/src/org/oscim/android/test/Samples.java
@@ -89,7 +89,6 @@ protected void onCreate(Bundle savedInstanceState) {
linearLayout.addView(createLabel(null));
linearLayout.addView(createButton(LocationTextureActivity.class));
linearLayout.addView(createButton(HillshadingActivity.class));
- linearLayout.addView(createButton(PoiSearchActivity.class));
linearLayout.addView(createButton(MapsforgeStyleActivity.class));
linearLayout.addView(createButton(MapsforgeS3DBActivity.class));
linearLayout.addView(createButton(MBTilesMvtActivity.class));