Rearrange classes in Core sample
This commit is contained in:
parent
02c310a438
commit
db1ed9cc41
7 changed files with 141 additions and 135 deletions
|
@ -45,10 +45,11 @@ import net.osmand.core.jni.QIODeviceLogSink;
|
||||||
import net.osmand.core.jni.ResolvedMapStyle;
|
import net.osmand.core.jni.ResolvedMapStyle;
|
||||||
import net.osmand.core.jni.Utilities;
|
import net.osmand.core.jni.Utilities;
|
||||||
import net.osmand.core.samples.android.sample1.MultiTouchSupport.MultiTouchZoomListener;
|
import net.osmand.core.samples.android.sample1.MultiTouchSupport.MultiTouchZoomListener;
|
||||||
|
import net.osmand.core.samples.android.sample1.adapters.SearchListAdapter;
|
||||||
|
import net.osmand.core.samples.android.sample1.adapters.SearchListItem;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchAPI;
|
import net.osmand.core.samples.android.sample1.search.SearchAPI;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchAPI.SearchAPICallback;
|
import net.osmand.core.samples.android.sample1.search.SearchAPI.SearchAPICallback;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchListAdapter;
|
import net.osmand.core.samples.android.sample1.search.SearchItem;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchListItem;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
|
@ -407,11 +408,11 @@ public class MainActivity extends Activity {
|
||||||
searchAPI.setObfAreaFilter(bounds31);
|
searchAPI.setObfAreaFilter(bounds31);
|
||||||
searchAPI.startSearch(keyword, MAX_SEARCH_RESULTS, new SearchAPICallback() {
|
searchAPI.startSearch(keyword, MAX_SEARCH_RESULTS, new SearchAPICallback() {
|
||||||
@Override
|
@Override
|
||||||
public void onSearchFinished(List<SearchAPI.SearchItem> searchItems, boolean cancelled) {
|
public void onSearchFinished(List<SearchItem> searchItems, boolean cancelled) {
|
||||||
if (searchItems != null && !cancelled) {
|
if (searchItems != null && !cancelled) {
|
||||||
LatLon latLon = Utilities.convert31ToLatLon(target31);
|
LatLon latLon = Utilities.convert31ToLatLon(target31);
|
||||||
List<SearchListItem> rows = new ArrayList<>();
|
List<SearchListItem> rows = new ArrayList<>();
|
||||||
for (SearchAPI.SearchItem item : searchItems) {
|
for (SearchItem item : searchItems) {
|
||||||
SearchListItem row =
|
SearchListItem row =
|
||||||
SearchListItem.buildListItem((SampleApplication)getApplication(), item);
|
SearchListItem.buildListItem((SampleApplication)getApplication(), item);
|
||||||
rows.add(row);
|
rows.add(row);
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
package net.osmand.core.samples.android.sample1.search;
|
package net.osmand.core.samples.android.sample1.adapters;
|
||||||
|
|
||||||
import net.osmand.core.samples.android.sample1.MapUtils;
|
import net.osmand.core.samples.android.sample1.MapUtils;
|
||||||
import net.osmand.core.samples.android.sample1.SampleApplication;
|
import net.osmand.core.samples.android.sample1.SampleApplication;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchAPI.AmenitySearchItem;
|
import net.osmand.core.samples.android.sample1.search.AmenitySearchItem;
|
||||||
import net.osmand.data.Amenity;
|
import net.osmand.data.Amenity;
|
||||||
import net.osmand.osm.MapPoiTypes;
|
import net.osmand.osm.MapPoiTypes;
|
||||||
import net.osmand.osm.PoiCategory;
|
import net.osmand.osm.PoiCategory;
|
|
@ -1,4 +1,4 @@
|
||||||
package net.osmand.core.samples.android.sample1.search;
|
package net.osmand.core.samples.android.sample1.adapters;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.view.LayoutInflater;
|
import android.view.LayoutInflater;
|
|
@ -1,10 +1,10 @@
|
||||||
package net.osmand.core.samples.android.sample1.search;
|
package net.osmand.core.samples.android.sample1.adapters;
|
||||||
|
|
||||||
import android.graphics.drawable.Drawable;
|
import android.graphics.drawable.Drawable;
|
||||||
|
|
||||||
import net.osmand.core.samples.android.sample1.SampleApplication;
|
import net.osmand.core.samples.android.sample1.SampleApplication;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchAPI.AmenitySearchItem;
|
import net.osmand.core.samples.android.sample1.search.AmenitySearchItem;
|
||||||
import net.osmand.core.samples.android.sample1.search.SearchAPI.SearchItem;
|
import net.osmand.core.samples.android.sample1.search.SearchItem;
|
||||||
|
|
||||||
public class SearchListItem {
|
public class SearchListItem {
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
package net.osmand.core.samples.android.sample1.search;
|
||||||
|
|
||||||
|
import net.osmand.core.jni.Amenity;
|
||||||
|
import net.osmand.core.jni.DecodedCategoryList;
|
||||||
|
import net.osmand.core.jni.DecodedValueList;
|
||||||
|
import net.osmand.core.jni.QStringList;
|
||||||
|
import net.osmand.core.jni.QStringStringHash;
|
||||||
|
import net.osmand.util.Algorithms;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
public class AmenitySearchItem extends SearchItem {
|
||||||
|
|
||||||
|
private String nativeName;
|
||||||
|
private String category;
|
||||||
|
private String subcategory;
|
||||||
|
private Map<String, String> localizedNames = new HashMap<>();
|
||||||
|
private Map<String, String> values = new HashMap<>();
|
||||||
|
|
||||||
|
public AmenitySearchItem(Amenity amenity) {
|
||||||
|
super(amenity.getPosition31());
|
||||||
|
|
||||||
|
nativeName = amenity.getNativeName();
|
||||||
|
QStringStringHash locNames = amenity.getLocalizedNames();
|
||||||
|
QStringList locNamesKeys = locNames.keys();
|
||||||
|
for (int i = 0; i < locNamesKeys.size(); i++) {
|
||||||
|
String key = locNamesKeys.get(i);
|
||||||
|
String val = locNames.get(key);
|
||||||
|
localizedNames.put(key, val);
|
||||||
|
}
|
||||||
|
|
||||||
|
DecodedCategoryList catList = amenity.getDecodedCategories();
|
||||||
|
if (catList.size() > 0) {
|
||||||
|
Amenity.DecodedCategory decodedCategory = catList.get(0);
|
||||||
|
category = decodedCategory.getCategory();
|
||||||
|
subcategory = decodedCategory.getSubcategory();
|
||||||
|
}
|
||||||
|
|
||||||
|
DecodedValueList decodedValueList = amenity.getDecodedValues();
|
||||||
|
if (decodedValueList.size() > 0) {
|
||||||
|
for (int i = 0; i < decodedValueList.size(); i++) {
|
||||||
|
Amenity.DecodedValue decodedValue = decodedValueList.get(i);
|
||||||
|
String tag = decodedValue.getDeclaration().getTagName();
|
||||||
|
String value = decodedValue.getValue().toString();
|
||||||
|
values.put(tag, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getNativeName() {
|
||||||
|
return nativeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getCategory() {
|
||||||
|
return category;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getSubcategory() {
|
||||||
|
return subcategory;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getLocalizedNames() {
|
||||||
|
return localizedNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Map<String, String> getValues() {
|
||||||
|
return values;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return nativeName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getType() {
|
||||||
|
return Algorithms.capitalizeFirstLetterAndLowercase(subcategory);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getLatitude() {
|
||||||
|
return latitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public double getLongitude() {
|
||||||
|
return longitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -4,26 +4,14 @@ import android.os.AsyncTask;
|
||||||
|
|
||||||
import net.osmand.core.jni.AmenitiesByNameSearch;
|
import net.osmand.core.jni.AmenitiesByNameSearch;
|
||||||
import net.osmand.core.jni.Amenity;
|
import net.osmand.core.jni.Amenity;
|
||||||
import net.osmand.core.jni.Amenity.DecodedCategory;
|
|
||||||
import net.osmand.core.jni.Amenity.DecodedValue;
|
|
||||||
import net.osmand.core.jni.AreaI;
|
import net.osmand.core.jni.AreaI;
|
||||||
import net.osmand.core.jni.DecodedCategoryList;
|
|
||||||
import net.osmand.core.jni.DecodedValueList;
|
|
||||||
import net.osmand.core.jni.IQueryController;
|
import net.osmand.core.jni.IQueryController;
|
||||||
import net.osmand.core.jni.ISearch;
|
import net.osmand.core.jni.ISearch;
|
||||||
import net.osmand.core.jni.LatLon;
|
|
||||||
import net.osmand.core.jni.NullableAreaI;
|
import net.osmand.core.jni.NullableAreaI;
|
||||||
import net.osmand.core.jni.ObfsCollection;
|
import net.osmand.core.jni.ObfsCollection;
|
||||||
import net.osmand.core.jni.PointI;
|
|
||||||
import net.osmand.core.jni.QStringList;
|
|
||||||
import net.osmand.core.jni.QStringStringHash;
|
|
||||||
import net.osmand.core.jni.Utilities;
|
|
||||||
import net.osmand.util.Algorithms;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
|
||||||
|
|
||||||
public class SearchAPI {
|
public class SearchAPI {
|
||||||
|
|
||||||
|
@ -193,117 +181,4 @@ public class SearchAPI {
|
||||||
super(ISearch.IResultEntry.getCPtr(resultEntry), false);
|
super(ISearch.IResultEntry.getCPtr(resultEntry), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static abstract class SearchItem {
|
|
||||||
|
|
||||||
protected double latitude;
|
|
||||||
protected double longitude;
|
|
||||||
|
|
||||||
public SearchItem(double latitude, double longitude) {
|
|
||||||
this.latitude = latitude;
|
|
||||||
this.longitude = longitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
public SearchItem(PointI location31) {
|
|
||||||
LatLon latLon = Utilities.convert31ToLatLon(location31);
|
|
||||||
latitude = latLon.getLatitude();
|
|
||||||
longitude = latLon.getLongitude();
|
|
||||||
}
|
|
||||||
|
|
||||||
public abstract String getName();
|
|
||||||
|
|
||||||
public abstract String getType();
|
|
||||||
|
|
||||||
public double getLatitude() {
|
|
||||||
return latitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
public double getLongitude() {
|
|
||||||
return longitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String toString() {
|
|
||||||
return getName() + " {lat:" + getLatitude() + " lon: " + getLongitude() + "}";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static class AmenitySearchItem extends SearchItem {
|
|
||||||
|
|
||||||
private String nativeName;
|
|
||||||
private String category;
|
|
||||||
private String subcategory;
|
|
||||||
private Map<String, String> localizedNames = new HashMap<>();
|
|
||||||
private Map<String, String> values = new HashMap<>();
|
|
||||||
|
|
||||||
public AmenitySearchItem(Amenity amenity) {
|
|
||||||
super(amenity.getPosition31());
|
|
||||||
|
|
||||||
nativeName = amenity.getNativeName();
|
|
||||||
QStringStringHash locNames = amenity.getLocalizedNames();
|
|
||||||
QStringList locNamesKeys = locNames.keys();
|
|
||||||
for (int i = 0; i < locNamesKeys.size(); i++) {
|
|
||||||
String key = locNamesKeys.get(i);
|
|
||||||
String val = locNames.get(key);
|
|
||||||
localizedNames.put(key, val);
|
|
||||||
}
|
|
||||||
|
|
||||||
DecodedCategoryList catList = amenity.getDecodedCategories();
|
|
||||||
if (catList.size() > 0) {
|
|
||||||
DecodedCategory decodedCategory = catList.get(0);
|
|
||||||
category = decodedCategory.getCategory();
|
|
||||||
subcategory = decodedCategory.getSubcategory();
|
|
||||||
}
|
|
||||||
|
|
||||||
DecodedValueList decodedValueList = amenity.getDecodedValues();
|
|
||||||
if (decodedValueList.size() > 0) {
|
|
||||||
for (int i = 0; i < decodedValueList.size(); i++) {
|
|
||||||
DecodedValue decodedValue = decodedValueList.get(i);
|
|
||||||
String tag = decodedValue.getDeclaration().getTagName();
|
|
||||||
String value = decodedValue.getValue().toString();
|
|
||||||
values.put(tag, value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getNativeName() {
|
|
||||||
return nativeName;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getCategory() {
|
|
||||||
return category;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getSubcategory() {
|
|
||||||
return subcategory;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getLocalizedNames() {
|
|
||||||
return localizedNames;
|
|
||||||
}
|
|
||||||
|
|
||||||
public Map<String, String> getValues() {
|
|
||||||
return values;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getName() {
|
|
||||||
return nativeName;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getType() {
|
|
||||||
return Algorithms.capitalizeFirstLetterAndLowercase(subcategory);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getLatitude() {
|
|
||||||
return latitude;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public double getLongitude() {
|
|
||||||
return longitude;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,39 @@
|
||||||
|
package net.osmand.core.samples.android.sample1.search;
|
||||||
|
|
||||||
|
import net.osmand.core.jni.LatLon;
|
||||||
|
import net.osmand.core.jni.PointI;
|
||||||
|
import net.osmand.core.jni.Utilities;
|
||||||
|
|
||||||
|
public abstract class SearchItem {
|
||||||
|
|
||||||
|
protected double latitude;
|
||||||
|
protected double longitude;
|
||||||
|
|
||||||
|
public SearchItem(double latitude, double longitude) {
|
||||||
|
this.latitude = latitude;
|
||||||
|
this.longitude = longitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public SearchItem(PointI location31) {
|
||||||
|
LatLon latLon = Utilities.convert31ToLatLon(location31);
|
||||||
|
latitude = latLon.getLatitude();
|
||||||
|
longitude = latLon.getLongitude();
|
||||||
|
}
|
||||||
|
|
||||||
|
public abstract String getName();
|
||||||
|
|
||||||
|
public abstract String getType();
|
||||||
|
|
||||||
|
public double getLatitude() {
|
||||||
|
return latitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
public double getLongitude() {
|
||||||
|
return longitude;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return getName() + " {lat:" + getLatitude() + " lon: " + getLongitude() + "}";
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue