diff --git a/src/main/AndroidManifest.xml b/src/main/AndroidManifest.xml
index 15a7e95..dcb7525 100644
--- a/src/main/AndroidManifest.xml
+++ b/src/main/AndroidManifest.xml
@@ -1,14 +1,15 @@
+ android:versionName="1.1.1"
+ android:versionCode="10101"
+ package="org.microg.nlp.backend.nominatim">
-
+
+ android:minSdkVersion="11"
+ android:targetSdkVersion="22" />
+
-
+
+
+
+
+
+
+
+
+
diff --git a/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java b/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java
index 0a4ec07..4f14148 100644
--- a/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java
+++ b/src/main/java/org/microg/nlp/backend/nominatim/BackendService.java
@@ -1,10 +1,12 @@
package org.microg.nlp.backend.nominatim;
import android.content.Context;
+import android.content.SharedPreferences;
import android.content.pm.PackageManager;
import android.location.Address;
import android.net.Uri;
import android.os.Build;
+import android.preference.PreferenceManager;
import android.util.Log;
import org.json.JSONArray;
@@ -28,11 +30,11 @@ public class BackendService extends GeocoderBackendService {
private static final String SERVICE_URL_MAPQUEST = "http://open.mapquestapi.com/nominatim/v1/";
private static final String SERVICE_URL_OSM = " http://nominatim.openstreetmap.org/";
private static final String REVERSE_GEOCODE_URL =
- "%sreverse?format=json&accept-language=%s&lat=%f&lon=%f";
+ "%sreverse?format=json&key=%s&accept-language=%s&lat=%f&lon=%f";
private static final String SEARCH_GEOCODE_URL =
- "%ssearch?format=json&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d";
+ "%ssearch?format=json&key=%s&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d";
private static final String SEARCH_GEOCODE_WITH_BOX_URL =
- "%ssearch?format=json&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d" +
+ "%ssearch?format=json&key=%s&accept-language=%s&addressdetails=1&bounded=1&q=%s&limit=%d" +
"&viewbox=%f,%f,%f,%f";
private static final String WIRE_LATITUDE = "lat";
private static final String WIRE_LONGITUDE = "lon";
@@ -51,8 +53,12 @@ public class BackendService extends GeocoderBackendService {
@Override
protected List
getFromLocation(double latitude, double longitude, int maxResults,
String locale) {
+
+ SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
+ String mapquestApiKey = SP.getString("api_preference", "NA");
+
String url = String.format(Locale.US, REVERSE_GEOCODE_URL, SERVICE_URL_MAPQUEST,
- locale.split("_")[0], latitude, longitude);
+ mapquestApiKey, locale.split("_")[0], latitude, longitude);
try {
JSONObject result = new JSONObject(new AsyncGetRequest(this,
url).asyncStart().retrieveString());
@@ -84,15 +90,19 @@ private static Locale localeFromLocaleString(String localeString) {
protected List getFromLocationName(String locationName, int maxResults,
double lowerLeftLatitude, double lowerLeftLongitude, double upperRightLatitude,
double upperRightLongitude, String locale) {
+
+ SharedPreferences SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
+ String mapquestApiKey = SP.getString("api_preference", "NA");
+
String query = Uri.encode(locationName);
String url;
if (lowerLeftLatitude == 0 && lowerLeftLongitude == 0 && upperRightLatitude == 0 &&
upperRightLongitude == 0) {
url = String.format(Locale.US, SEARCH_GEOCODE_URL, SERVICE_URL_MAPQUEST,
- locale.split("_")[0], query, maxResults);
+ mapquestApiKey, locale.split("_")[0], query, maxResults);
} else {
url = String.format(Locale.US, SEARCH_GEOCODE_WITH_BOX_URL, SERVICE_URL_MAPQUEST,
- locale.split("_")[0], query, maxResults, lowerLeftLongitude,
+ mapquestApiKey, locale.split("_")[0], query, maxResults, lowerLeftLongitude,
upperRightLatitude, upperRightLongitude, lowerLeftLatitude);
}
try {
diff --git a/src/main/java/org/microg/nlp/backend/nominatim/SettingsActivity.java b/src/main/java/org/microg/nlp/backend/nominatim/SettingsActivity.java
new file mode 100644
index 0000000..354d41e
--- /dev/null
+++ b/src/main/java/org/microg/nlp/backend/nominatim/SettingsActivity.java
@@ -0,0 +1,58 @@
+package org.microg.nlp.backend.nominatim;
+
+import android.content.SharedPreferences;
+import android.preference.ListPreference;
+import android.preference.Preference;
+import android.preference.PreferenceActivity;
+import android.preference.PreferenceFragment;
+import android.os.Bundle;
+
+public class SettingsActivity extends PreferenceActivity {
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Display the fragment as the main content.
+ getFragmentManager().beginTransaction()
+ .replace(android.R.id.content, new PrefsFragment()).commit();
+
+ }
+
+ public static class PrefsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {
+
+ @Override
+ public void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+
+ // Load the preferences from an XML resource
+ addPreferencesFromResource(R.xml.preferences);
+ setSummaries();
+ getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
+ }
+
+ @Override
+ public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
+ updatePreference(findPreference(key), key);
+ }
+
+ private void setSummaries(){
+
+ final SharedPreferences sh = getPreferenceManager().getSharedPreferences() ;
+
+ Preference stylePref = findPreference("api_preference");
+ stylePref.setSummary(sh.getString("api_preference", ""));
+
+ }
+ private void updatePreference(Preference preference, String key) {
+ if (preference == null) return;
+ if (preference instanceof ListPreference) {
+ ListPreference listPreference = (ListPreference) preference;
+ listPreference.setSummary(listPreference.getEntry());
+ return;
+ }
+ SharedPreferences sharedPrefs = getPreferenceManager().getSharedPreferences();
+ preference.setSummary(sharedPrefs.getString(key, "Default"));
+ }
+ }
+
+}
\ No newline at end of file
diff --git a/src/main/res/values/strings.xml b/src/main/res/values/strings.xml
index ec5cbfd..db6198f 100644
--- a/src/main/res/values/strings.xml
+++ b/src/main/res/values/strings.xml
@@ -1,5 +1,10 @@
- NominatimGeocoderBackend
+ Nominatim Geocoder Backend
Nominatim
+
+ MapQuest Server Access
+ MapQuest Developer API Key
+ MapQuest Developer API Key
+ Enter your MapQuest developer API key.
diff --git a/src/main/res/xml/preferences.xml b/src/main/res/xml/preferences.xml
new file mode 100644
index 0000000..5c3a854
--- /dev/null
+++ b/src/main/res/xml/preferences.xml
@@ -0,0 +1,16 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file