Support custom categories and put them into USER_DEFINED
This commit is contained in:
parent
bf9f0e5220
commit
a9c6f8ebd3
7 changed files with 22 additions and 30 deletions
|
@ -55,11 +55,11 @@ public class BinaryInspector {
|
||||||
BinaryInspector in = new BinaryInspector();
|
BinaryInspector in = new BinaryInspector();
|
||||||
in.inspector(args);
|
in.inspector(args);
|
||||||
// test cases show info
|
// test cases show info
|
||||||
/*in.inspector(new String[]{
|
in.inspector(new String[]{
|
||||||
"-vpoi",
|
"-vpoi",
|
||||||
//"-vmap", "-vmapobjects",
|
//"-vmap", "-vmapobjects",
|
||||||
//"-vstreets", "-bbox=14.4,50.1,14.5,50.01",
|
//"-vstreets", "-bbox=14.4,50.1,14.5,50.01",
|
||||||
"/home/victor/projects/osmand/osm-gen/Map.obf"});*/
|
"/home/victor/projects/osmand/osm-gen/Austria_europe.obf"});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void printToFile(String s) throws IOException {
|
private void printToFile(String s) throws IOException {
|
||||||
|
@ -809,7 +809,7 @@ public class BinaryInspector {
|
||||||
println("\t\t\t" + st.name + " " + (st.text ? "text":(" encoded " + st.possibleValues.size())));
|
println("\t\t\t" + st.name + " " + (st.text ? "text":(" encoded " + st.possibleValues.size())));
|
||||||
}
|
}
|
||||||
req.poiTypeFilter = null;//TODO: for test only
|
req.poiTypeFilter = null;//TODO: for test only
|
||||||
index.searchPoi(p, req);
|
// index.searchPoi(p, req);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -60,12 +60,14 @@ public class AmenityType {
|
||||||
this.ordinal = ordinal;
|
this.ordinal = ordinal;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AmenityType findRegisteredType(String s) {
|
|
||||||
return findRegisteredType(s, OTHER);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AmenityType findOrCreateTypeNoReg(String s) {
|
public static AmenityType findOrCreateTypeNoReg(String s) {
|
||||||
AmenityType type = findRegisteredType(s, null);
|
AmenityType type = null;
|
||||||
|
for (AmenityType t : amenityTypes.values()) {
|
||||||
|
if (t.name.equalsIgnoreCase(s)) {
|
||||||
|
type = t;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
if(type == null) {
|
if(type == null) {
|
||||||
type = new AmenityType(s, s, -1);
|
type = new AmenityType(s, s, -1);
|
||||||
}
|
}
|
||||||
|
@ -77,15 +79,6 @@ public class AmenityType {
|
||||||
return type.ordinal >= 0;
|
return type.ordinal >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static AmenityType findRegisteredType(String s, AmenityType def) {
|
|
||||||
for (AmenityType t : amenityTypes.values()) {
|
|
||||||
if (t.name.equalsIgnoreCase(s)) {
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return def;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static AmenityType getAndRegisterType(String name) {
|
public static AmenityType getAndRegisterType(String name) {
|
||||||
return reg(name, name);
|
return reg(name, name);
|
||||||
}
|
}
|
||||||
|
|
|
@ -383,7 +383,7 @@ public class MapRenderingTypes {
|
||||||
|
|
||||||
|
|
||||||
if (poiParentCategory != null) {
|
if (poiParentCategory != null) {
|
||||||
rtype.poiCategory = AmenityType.findRegisteredType(poiParentCategory, null);
|
rtype.poiCategory = AmenityType.getAndRegisterType(poiParentCategory);
|
||||||
rtype.poiSpecified = true;
|
rtype.poiSpecified = true;
|
||||||
}
|
}
|
||||||
if (poiParentPrefix != null) {
|
if (poiParentPrefix != null) {
|
||||||
|
|
|
@ -166,11 +166,14 @@ public class OsmAndFormatter {
|
||||||
return type + " " + n; //$NON-NLS-1$
|
return type + " " + n; //$NON-NLS-1$
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getAmenityDescriptionContent(ClientContext ctx, Amenity amenity) {
|
public static String getAmenityDescriptionContent(ClientContext ctx, Amenity amenity, boolean shortDescription) {
|
||||||
StringBuilder d = new StringBuilder();
|
StringBuilder d = new StringBuilder();
|
||||||
for(Entry<String, String> e : amenity.getAdditionalInfo().entrySet()) {
|
for(Entry<String, String> e : amenity.getAdditionalInfo().entrySet()) {
|
||||||
String key = e.getKey();
|
String key = e.getKey();
|
||||||
if(Amenity.DESCRIPTION.equals(key)) {
|
if(Amenity.DESCRIPTION.equals(key)) {
|
||||||
|
if(amenity.getType() == AmenityType.OSMWIKI && shortDescription) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
} else if(Amenity.OPENING_HOURS.equals(key)) {
|
} else if(Amenity.OPENING_HOURS.equals(key)) {
|
||||||
d.append(ctx.getString(R.string.opening_hours) + " : ");
|
d.append(ctx.getString(R.string.opening_hours) + " : ");
|
||||||
} else if(Amenity.PHONE.equals(key)) {
|
} else if(Amenity.PHONE.equals(key)) {
|
||||||
|
|
|
@ -201,7 +201,7 @@ public class PoiFilter {
|
||||||
|
|
||||||
public boolean acceptTypeSubtype(AmenityType t, String subtype){
|
public boolean acceptTypeSubtype(AmenityType t, String subtype){
|
||||||
if(!AmenityType.isRegisteredType(t)) {
|
if(!AmenityType.isRegisteredType(t)) {
|
||||||
t = AmenityType.OTHER;
|
t = AmenityType.USER_DEFINED;
|
||||||
}
|
}
|
||||||
if(!acceptedTypes.containsKey(t)){
|
if(!acceptedTypes.containsKey(t)){
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -555,12 +555,12 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
ActionItem poiDescription = new ActionItem();
|
ActionItem poiDescription = new ActionItem();
|
||||||
poiDescription.setIcon(getResources().getDrawable(R.drawable.ic_action_note_light));
|
poiDescription.setIcon(getResources().getDrawable(R.drawable.ic_action_note_light));
|
||||||
poiDescription.setTitle(getString(R.string.poi_context_menu_showdescription));
|
poiDescription.setTitle(getString(R.string.poi_context_menu_showdescription));
|
||||||
final String d = getDescriptionContent(amenity);
|
final String d = OsmAndFormatter.getAmenityDescriptionContent(getMyApplication(), amenity, false);
|
||||||
poiDescription.setOnClickListener(new OnClickListener() {
|
poiDescription.setOnClickListener(new OnClickListener() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(View v) {
|
public void onClick(View v) {
|
||||||
// Build text
|
// Build text(amenity)
|
||||||
|
|
||||||
// Find and format links
|
// Find and format links
|
||||||
SpannableString spannable = new SpannableString(d);
|
SpannableString spannable = new SpannableString(d);
|
||||||
|
@ -600,10 +600,6 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getDescriptionContent(final Amenity amenity) {
|
|
||||||
return OsmAndFormatter.getAmenityDescriptionContent(getMyApplication(), amenity);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
static class SearchAmenityRequest {
|
static class SearchAmenityRequest {
|
||||||
private static final int SEARCH_AGAIN = 1;
|
private static final int SEARCH_AGAIN = 1;
|
||||||
|
@ -876,7 +872,7 @@ public class SearchPOIActivity extends OsmandListActivity implements OsmAndCompa
|
||||||
String direction = navigationInfo.getDirectionString(amenity.getLocation(), heading);
|
String direction = navigationInfo.getDirectionString(amenity.getLocation(), heading);
|
||||||
if (direction != null)
|
if (direction != null)
|
||||||
attributes.add(direction);
|
attributes.add(direction);
|
||||||
String[] as = OsmAndFormatter.getAmenityDescriptionContent(getMyApplication(), amenity).split("\n");
|
String[] as = OsmAndFormatter.getAmenityDescriptionContent(getMyApplication(), amenity, false).split("\n");
|
||||||
for(String s: as) {
|
for(String s: as) {
|
||||||
attributes.add(s.replace(':', ' '));
|
attributes.add(s.replace(':', ' '));
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,7 +111,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
||||||
|
|
||||||
private StringBuilder buildPoiInformation(StringBuilder res, Amenity n) {
|
private StringBuilder buildPoiInformation(StringBuilder res, Amenity n) {
|
||||||
String format = OsmAndFormatter.getPoiSimpleFormat(n, view.getApplication(), view.getSettings().USE_ENGLISH_NAMES.get());
|
String format = OsmAndFormatter.getPoiSimpleFormat(n, view.getApplication(), view.getSettings().USE_ENGLISH_NAMES.get());
|
||||||
res.append(" " + format + "\n" + OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), n));
|
res.append(" " + format + "\n" + OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), n, true));
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -322,7 +322,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
if(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a).length() > 0){
|
if(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false).length() > 0){
|
||||||
adapter.item(R.string.poi_context_menu_showdescription)
|
adapter.item(R.string.poi_context_menu_showdescription)
|
||||||
.icons(R.drawable.ic_action_note_dark,R.drawable.ic_action_note_light)
|
.icons(R.drawable.ic_action_note_dark,R.drawable.ic_action_note_light)
|
||||||
.listen(listener).reg();
|
.listen(listener).reg();
|
||||||
|
@ -343,7 +343,7 @@ public class POIMapLayer extends OsmandMapLayer implements ContextMenuLayer.ICon
|
||||||
if(a.getType() == AmenityType.OSMWIKI) {
|
if(a.getType() == AmenityType.OSMWIKI) {
|
||||||
bs.setMessage(a.getDescription());
|
bs.setMessage(a.getDescription());
|
||||||
} else {
|
} else {
|
||||||
bs.setMessage(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a));
|
bs.setMessage(OsmAndFormatter.getAmenityDescriptionContent(view.getApplication(), a, false));
|
||||||
}
|
}
|
||||||
bs.show();
|
bs.show();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue