fix some search issues
git-svn-id: https://osmand.googlecode.com/svn/trunk@107 e29c36b1-1cfa-d876-8d93-3434fc2bb7b8
This commit is contained in:
parent
8c2ae5e8c2
commit
03b52f348f
11 changed files with 116 additions and 20 deletions
|
@ -11,6 +11,9 @@ public class ToDoConstants {
|
||||||
*/
|
*/
|
||||||
public int DESCRIBE_ABOUT_AUTHORS = 8;
|
public int DESCRIBE_ABOUT_AUTHORS = 8;
|
||||||
|
|
||||||
|
// TODO team :
|
||||||
|
// 1. write letters (UI/strings)
|
||||||
|
|
||||||
// TODO ANDROID
|
// TODO ANDROID
|
||||||
// 25. POI search near to map location (show categories & type). Second cut. (implement incremental search)
|
// 25. POI search near to map location (show categories & type). Second cut. (implement incremental search)
|
||||||
|
|
||||||
|
@ -24,14 +27,13 @@ public class ToDoConstants {
|
||||||
// 8. Enable change POI directly on map (requires OSM login)
|
// 8. Enable change POI directly on map (requires OSM login)
|
||||||
// 16. Support open street bugs api.
|
// 16. Support open street bugs api.
|
||||||
// 20. Implement save track/route to gpx (?)
|
// 20. Implement save track/route to gpx (?)
|
||||||
|
// 24. Show the whole street on map (when it is chosen in search activity). Possibly extend that story to show layer with streets.
|
||||||
|
// 25. Show opened/closed amenities.
|
||||||
|
|
||||||
// TODO search story :
|
// TODO search story :
|
||||||
// 2) Find intersection of streets
|
// 2) Find intersection of streets
|
||||||
// 3) Shows progress dialog (?)
|
// 9) Loading cities (data) in another thread
|
||||||
// 6) Show street on map
|
// 10) fix bug with landscape layout (search address)
|
||||||
// 8) Show message (that user should input more than 2 symbols to get all)
|
|
||||||
// 9) Loading cities in another thread
|
|
||||||
// 10. fix bug with landscape layout (search address)
|
|
||||||
|
|
||||||
|
|
||||||
// FIXME Bugs Android :
|
// FIXME Bugs Android :
|
||||||
|
@ -53,6 +55,7 @@ public class ToDoConstants {
|
||||||
// 6. Implement renaming/deleting street/building/city
|
// 6. Implement renaming/deleting street/building/city
|
||||||
// 8. Implement basic transliteration version
|
// 8. Implement basic transliteration version
|
||||||
// 7. Implement saving bundle of tiles in different folder
|
// 7. Implement saving bundle of tiles in different folder
|
||||||
|
// 9. Using Collator in all TreeSet/TreeMap/Comparators
|
||||||
// 1. Download tiles without using dir tiles
|
// 1. Download tiles without using dir tiles
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,8 @@
|
||||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
android:layout_width="fill_parent"
|
android:layout_width="fill_parent"
|
||||||
android:layout_height="fill_parent" android:orientation="vertical">
|
android:layout_height="fill_parent" android:orientation="vertical">
|
||||||
|
<TextView android:text="" android:id="@+id/Label" android:layout_width="fill_parent" android:layout_height="wrap_content" android:gravity="center"></TextView>
|
||||||
|
|
||||||
<LinearLayout android:id="@+id/LinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="3dp" android:layout_marginRight="3dp">
|
<LinearLayout android:id="@+id/LinearLayout" android:layout_width="fill_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:layout_marginTop="3dp" android:layout_marginRight="3dp">
|
||||||
<EditText android:text="" android:id="@+id/SearchText" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="text|textFilter|textPhonetic"></EditText>
|
<EditText android:text="" android:id="@+id/SearchText" android:layout_weight="1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:inputType="text|textFilter|textPhonetic"></EditText>
|
||||||
<Button android:text="Reset" android:id="@+id/ResetButton" android:layout_width="wrap_content" android:layout_height="wrap_content"
|
<Button android:text="Reset" android:id="@+id/ResetButton" android:layout_width="wrap_content" android:layout_height="wrap_content"
|
||||||
|
@ -12,4 +14,5 @@
|
||||||
|
|
||||||
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"
|
<ListView android:id="@android:id/list" android:layout_width="fill_parent" android:layout_height="fill_parent"
|
||||||
android:layout_marginLeft="3dp" android:layout_marginTop="3dp" android:layout_marginRight="3dp"></ListView>
|
android:layout_marginLeft="3dp" android:layout_marginTop="3dp" android:layout_marginRight="3dp"></ListView>
|
||||||
|
|
||||||
</LinearLayout>
|
</LinearLayout>
|
||||||
|
|
|
@ -40,4 +40,8 @@
|
||||||
<color name="color_red">#FF0000</color>
|
<color name="color_red">#FF0000</color>
|
||||||
<string name="searchpoi_activity">searchpoi_activity</string>
|
<string name="searchpoi_activity">searchpoi_activity</string>
|
||||||
<string name="search_POI_level_btn">Find more</string>
|
<string name="search_POI_level_btn">Find more</string>
|
||||||
|
<string name="incremental_search_city">Search city incrementally. In order to find villages input more than 3 first symbols.</string>
|
||||||
|
<string name="incremental_search_street">Search street incrementally</string>
|
||||||
|
<string name="incremental_search_building">Search building incrementally</string>
|
||||||
|
<string name="choose_available_region">Choose region</string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
|
@ -122,6 +122,7 @@ public class OsmandSettings {
|
||||||
public static final String LAST_SEARCHED_CITY = "last_searched_city";
|
public static final String LAST_SEARCHED_CITY = "last_searched_city";
|
||||||
public static final String LAST_SEARCHED_STREET = "last_searched_street";
|
public static final String LAST_SEARCHED_STREET = "last_searched_street";
|
||||||
public static final String LAST_SEARCHED_BUILDING = "last_searched_building";
|
public static final String LAST_SEARCHED_BUILDING = "last_searched_building";
|
||||||
|
public static final String LAST_SEARCHED_INTERSECTED_STREET = "last_searched_intersected_street";
|
||||||
|
|
||||||
public static String getLastSearchedRegion(Context ctx){
|
public static String getLastSearchedRegion(Context ctx){
|
||||||
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
||||||
|
@ -140,7 +141,9 @@ public class OsmandSettings {
|
||||||
|
|
||||||
public static boolean setLastSearchedCity(Context ctx, Long cityId){
|
public static boolean setLastSearchedCity(Context ctx, Long cityId){
|
||||||
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
||||||
return prefs.edit().putLong(LAST_SEARCHED_CITY, cityId).commit();
|
return prefs.edit().
|
||||||
|
putLong(LAST_SEARCHED_CITY, cityId).putString(LAST_SEARCHED_STREET, "").putString(LAST_SEARCHED_BUILDING, "").
|
||||||
|
commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getLastSearchedStreet(Context ctx){
|
public static String getLastSearchedStreet(Context ctx){
|
||||||
|
@ -150,7 +153,7 @@ public class OsmandSettings {
|
||||||
|
|
||||||
public static boolean setLastSearchedStreet(Context ctx, String street){
|
public static boolean setLastSearchedStreet(Context ctx, String street){
|
||||||
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
||||||
return prefs.edit().putString(LAST_SEARCHED_STREET, street).commit();
|
return prefs.edit().putString(LAST_SEARCHED_STREET, street).putString(LAST_SEARCHED_BUILDING, "").commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static String getLastSearchedBuilding(Context ctx){
|
public static String getLastSearchedBuilding(Context ctx){
|
||||||
|
@ -160,7 +163,21 @@ public class OsmandSettings {
|
||||||
|
|
||||||
public static boolean setLastSearchedBuilding(Context ctx, String building){
|
public static boolean setLastSearchedBuilding(Context ctx, String building){
|
||||||
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
||||||
return prefs.edit().putString(LAST_SEARCHED_BUILDING, building).commit();
|
return prefs.edit().putString(LAST_SEARCHED_BUILDING, building).remove(LAST_SEARCHED_INTERSECTED_STREET).commit();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public static String getLastSearchedIntersectedStreet(Context ctx){
|
||||||
|
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
||||||
|
if(!prefs.contains(LAST_SEARCHED_INTERSECTED_STREET)){
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return prefs.getString(LAST_SEARCHED_INTERSECTED_STREET, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public static boolean setLastSearchedIntersectedStreet(Context ctx, String street){
|
||||||
|
SharedPreferences prefs = ctx.getSharedPreferences(SHARED_PREFERENCES_NAME, Context.MODE_WORLD_READABLE);
|
||||||
|
return prefs.edit().putString(LAST_SEARCHED_INTERSECTED_STREET, street).commit();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -58,6 +58,10 @@ public class RegionAddressRepository {
|
||||||
cityTypes.clear();
|
cityTypes.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean areCitiesPreloaded(){
|
||||||
|
return !cities.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
public City getCityById(Long id){
|
public City getCityById(Long id){
|
||||||
if(id == -1){
|
if(id == -1){
|
||||||
// do not preload cities for that case
|
// do not preload cities for that case
|
||||||
|
|
|
@ -22,7 +22,7 @@ public class SearchActivity extends TabActivity {
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
TabHost host = getTabHost();
|
TabHost host = getTabHost();
|
||||||
host.addTab(host.newTabSpec("Search_POI").setIndicator("Search POI").setContent(new Intent(this, SearchPOIListActivity.class)));
|
host.addTab(host.newTabSpec("Search_POI").setIndicator("Search POI").setContent(new Intent(this, SearchPOIListActivity.class)));
|
||||||
host.addTab(host.newTabSpec("Search_Adress").setIndicator("Search Address").setContent(new Intent(this, SearchAddressActivity.class)));
|
host.addTab(host.newTabSpec("Search_Address").setIndicator("Search Address").setContent(new Intent(this, SearchAddressActivity.class)));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,6 +2,7 @@ package com.osmand.activities.search;
|
||||||
|
|
||||||
|
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.app.ProgressDialog;
|
||||||
import android.content.Intent;
|
import android.content.Intent;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
|
@ -30,6 +31,7 @@ public class SearchAddressActivity extends Activity {
|
||||||
private City city = null;
|
private City city = null;
|
||||||
private Street street = null;
|
private Street street = null;
|
||||||
private Building building = null;
|
private Building building = null;
|
||||||
|
private ProgressDialog dlg;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onCreate(Bundle savedInstanceState) {
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
@ -42,7 +44,7 @@ public class SearchAddressActivity extends Activity {
|
||||||
cityButton = (Button) findViewById(R.id.CityButton);
|
cityButton = (Button) findViewById(R.id.CityButton);
|
||||||
countryButton = (Button) findViewById(R.id.CountryButton);
|
countryButton = (Button) findViewById(R.id.CountryButton);
|
||||||
buildingButton = (Button) findViewById(R.id.BuildingButton);
|
buildingButton = (Button) findViewById(R.id.BuildingButton);
|
||||||
attachListeners();
|
attachListeners();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void attachListeners() {
|
private void attachListeners() {
|
||||||
|
@ -163,26 +165,75 @@ public class SearchAddressActivity extends Activity {
|
||||||
showOnMap.setEnabled(building != null || city != null || street != null);
|
showOnMap.setEnabled(building != null || city != null || street != null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void loadData(){
|
||||||
|
if (region != null) {
|
||||||
|
city = region.getCityById(OsmandSettings.getLastSearchedCity(SearchAddressActivity.this));
|
||||||
|
if (city != null) {
|
||||||
|
street = region.getStreetByName(city, OsmandSettings.getLastSearchedStreet(SearchAddressActivity.this));
|
||||||
|
if (street != null) {
|
||||||
|
building = region.getBuildingByName(street, OsmandSettings
|
||||||
|
.getLastSearchedBuilding(SearchAddressActivity.this));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onResume() {
|
protected void onResume() {
|
||||||
super.onResume();
|
super.onResume();
|
||||||
|
|
||||||
region = null;
|
region = null;
|
||||||
|
|
||||||
|
String lastSearchedRegion = OsmandSettings.getLastSearchedRegion(SearchAddressActivity.this);
|
||||||
|
region = ResourceManager.getResourceManager().getRegionRepository(lastSearchedRegion);
|
||||||
|
String progressMsg = null;
|
||||||
|
// try to determine whether progress dialog & new thread needed
|
||||||
|
if(region.areCitiesPreloaded()){
|
||||||
|
progressMsg = "Loading cities...";
|
||||||
|
} else if(city == null || city.getId() != OsmandSettings.getLastSearchedCity(this)){
|
||||||
|
progressMsg = "Loading streets/buildings...";
|
||||||
|
}
|
||||||
city = null;
|
city = null;
|
||||||
street = null;
|
street = null;
|
||||||
building = null;
|
building = null;
|
||||||
String lastSearchedRegion = OsmandSettings.getLastSearchedRegion(this);
|
|
||||||
region = ResourceManager.getResourceManager().getRegionRepository(lastSearchedRegion);
|
if (progressMsg != null) {
|
||||||
if(region != null){
|
dlg = ProgressDialog.show(this, "Loading", progressMsg, true);
|
||||||
city = region.getCityById(OsmandSettings.getLastSearchedCity(this));
|
new Thread("Loader search data") {
|
||||||
if(city != null){
|
@Override
|
||||||
street = region.getStreetByName(city, OsmandSettings.getLastSearchedStreet(this));
|
public void run() {
|
||||||
if(street != null){
|
try {
|
||||||
building = region.getBuildingByName(street, OsmandSettings.getLastSearchedBuilding(this));
|
loadData();
|
||||||
|
} finally {
|
||||||
|
dlg.dismiss();
|
||||||
|
runOnUiThread(new Runnable() {
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
updateUI();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}.start();
|
||||||
|
} else {
|
||||||
|
loadData();
|
||||||
|
updateUI();
|
||||||
}
|
}
|
||||||
|
|
||||||
updateUI();
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onPause() {
|
||||||
|
if(building == null && OsmandSettings.getLastSearchedBuilding(this).length() > 0){
|
||||||
|
OsmandSettings.setLastSearchedBuilding(this, "");
|
||||||
|
}
|
||||||
|
if(street == null && OsmandSettings.getLastSearchedStreet(this).length() > 0){
|
||||||
|
OsmandSettings.setLastSearchedStreet(this, "");
|
||||||
|
}
|
||||||
|
if(city == null && OsmandSettings.getLastSearchedCity(this) != -1){
|
||||||
|
OsmandSettings.setLastSearchedCity(this, -1l);
|
||||||
|
}
|
||||||
|
super.onPause();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -7,6 +7,7 @@ import android.os.Bundle;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.osmand.OsmandSettings;
|
import com.osmand.OsmandSettings;
|
||||||
|
import com.osmand.R;
|
||||||
import com.osmand.RegionAddressRepository;
|
import com.osmand.RegionAddressRepository;
|
||||||
import com.osmand.ResourceManager;
|
import com.osmand.ResourceManager;
|
||||||
import com.osmand.data.Building;
|
import com.osmand.data.Building;
|
||||||
|
@ -27,6 +28,7 @@ public class SearchBuildingByNameActivity extends SearchByNameAbstractActivity<B
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
((TextView)findViewById(R.id.Label)).setText(R.string.incremental_search_building);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -7,6 +7,7 @@ import android.os.Bundle;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.osmand.OsmandSettings;
|
import com.osmand.OsmandSettings;
|
||||||
|
import com.osmand.R;
|
||||||
import com.osmand.RegionAddressRepository;
|
import com.osmand.RegionAddressRepository;
|
||||||
import com.osmand.ResourceManager;
|
import com.osmand.ResourceManager;
|
||||||
import com.osmand.data.City;
|
import com.osmand.data.City;
|
||||||
|
@ -22,6 +23,7 @@ public class SearchCityByNameActivity extends SearchByNameAbstractActivity<City>
|
||||||
region = ResourceManager.getResourceManager().getRegionRepository(OsmandSettings.getLastSearchedRegion(this));
|
region = ResourceManager.getResourceManager().getRegionRepository(OsmandSettings.getLastSearchedRegion(this));
|
||||||
location = OsmandSettings.getLastKnownMapLocation(this);
|
location = OsmandSettings.getLastKnownMapLocation(this);
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
((TextView)findViewById(R.id.Label)).setText(R.string.incremental_search_city);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -3,14 +3,22 @@ package com.osmand.activities.search;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import android.os.Bundle;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.osmand.OsmandSettings;
|
import com.osmand.OsmandSettings;
|
||||||
|
import com.osmand.R;
|
||||||
import com.osmand.RegionAddressRepository;
|
import com.osmand.RegionAddressRepository;
|
||||||
import com.osmand.ResourceManager;
|
import com.osmand.ResourceManager;
|
||||||
|
|
||||||
public class SearchRegionByNameActivity extends SearchByNameAbstractActivity<RegionAddressRepository> {
|
public class SearchRegionByNameActivity extends SearchByNameAbstractActivity<RegionAddressRepository> {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected void onCreate(Bundle savedInstanceState) {
|
||||||
|
super.onCreate(savedInstanceState);
|
||||||
|
((TextView)findViewById(R.id.Label)).setText(R.string.choose_available_region);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<RegionAddressRepository> getObjects(String filter) {
|
public List<RegionAddressRepository> getObjects(String filter) {
|
||||||
return new ArrayList<RegionAddressRepository>(ResourceManager.getResourceManager().getAddressRepositories());
|
return new ArrayList<RegionAddressRepository>(ResourceManager.getResourceManager().getAddressRepositories());
|
||||||
|
|
|
@ -7,6 +7,7 @@ import android.os.Bundle;
|
||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import com.osmand.OsmandSettings;
|
import com.osmand.OsmandSettings;
|
||||||
|
import com.osmand.R;
|
||||||
import com.osmand.RegionAddressRepository;
|
import com.osmand.RegionAddressRepository;
|
||||||
import com.osmand.ResourceManager;
|
import com.osmand.ResourceManager;
|
||||||
import com.osmand.data.City;
|
import com.osmand.data.City;
|
||||||
|
@ -22,6 +23,7 @@ public class SearchStreetByNameActivity extends SearchByNameAbstractActivity<Str
|
||||||
city = region.getCityById(OsmandSettings.getLastSearchedCity(this));
|
city = region.getCityById(OsmandSettings.getLastSearchedCity(this));
|
||||||
}
|
}
|
||||||
super.onCreate(savedInstanceState);
|
super.onCreate(savedInstanceState);
|
||||||
|
((TextView)findViewById(R.id.Label)).setText(R.string.incremental_search_street);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Loading…
Reference in a new issue