-1
我正在開發小型應用程序以查找最近的atm。在Android上找不到Near Most Atm
在這我發現我的位置現在我正在請求訪問谷歌的地方。
當我開始我的應用程序它最初顯示我我的位置,但幾秒鐘後它會自動崩潰。
我無法解決登錄貓。
它顯示了一些錯誤,但如何找出它。
這裏是我的logcat。
09-24 17:09:16.671: E/AndroidRuntime(12415): java.lang.NumberFormatException: Invalid double: ""
09-24 17:09:16.671: E/AndroidRuntime(12415): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
09-24 17:09:16.671: E/AndroidRuntime(12415): at java.lang.StringToReal.parseDouble(StringToReal.java:248)
09-24 17:09:16.671: E/AndroidRuntime(12415): at java.lang.Double.parseDouble(Double.java:295)
09-24 17:09:16.671: E/AndroidRuntime(12415): at com.project.kamani.nearby.Map$ParserTask.onPostExecute(Map.java:305)
09-24 17:09:16.671: E/AndroidRuntime(12415): at com.project.kamani.nearby.Map$ParserTask.onPostExecute(Map.java:1)
09-24 17:09:16.671: E/AndroidRuntime(12415): at android.os.AsyncTask.finish(AsyncTask.java:631)
09-24 17:09:16.671: E/AndroidRuntime(12415): at android.os.AsyncTask.access$600(AsyncTask.java:177)
09-24 17:09:16.671: E/AndroidRuntime(12415): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
這裏我注意到發佈完整的logcat我只是把其中我認爲它可能顯示錯誤的某些行。
這是我的代碼。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isGooglePlayAvailable()) {
criteria = new Criteria();
setContentView(R.layout.mapdemo);
getGoogleMap();
getUserLocation();
Toast.makeText(this, "Latitude:" + lat + " Longitude:" + lang,
Toast.LENGTH_LONG).show();
getAddress(lat, lang);
drawMarker(lat, lang);
StringBuilder sb = new StringBuilder(
"https://maps.googleapis.com/maps/api/place/nearbysearch/json?");
sb.append("location=" + lat + "," + lang);
sb.append("&radius=5000");
sb.append("&types=atm");
sb.append("&name=ATM");
sb.append("&sensor=false");
sb.append("&key=my api key");
PlacesTask placesTask = new PlacesTask();
placesTask.execute(sb.toString());
}
這裏到了drawmarker()工作正常。
以下是Places Task類的代碼。
private class PlacesTask extends AsyncTask<String, Integer, String> {
String data = null;
@Override
protected String doInBackground(String... url) {
try {
data = downloadUrl(url[0]);
} catch (Exception e) {
e.printStackTrace();
}
return data;
}
@Override
protected void onPostExecute(String result) {
ParserTask parsertask = new ParserTask();
parsertask.execute(result);
}
}
這是Parser Task的代碼。
私有類ParserTask延伸的AsyncTask {
JSONObject jObject;
@Override
protected Place[] doInBackground(String... jsonData) {
Place[] places = null;
PlaceJSonParser placeJsonParser = new PlaceJSonParser();
try {
jObject = new JSONObject(jsonData[0]);
places = placeJsonParser.parse(jObject);
} catch (Exception e) {
Log.d("Exception", e.toString());
}
return places;
}
@Override
protected void onPostExecute(Place[] places) {
mplace = places;
for (int i = 0; i < places.length; i++) {
Place place = places[i];
double latitude = Double.parseDouble(place.mLat);
double longitude = Double.parseDouble(place.mLang);
LatLng latlng = new LatLng(latitude, longitude);
Marker ATM_MARKER = drawATMMarker(latlng);
mHMReference.put(ATM_MARKER.getId(), place);
}
}
}
這裏是downloadurl方法的代碼。我不知道爲什麼它不工作。
private String downloadUrl(String strUrl) throws IOException {
String data = "";
InputStream iStream = null;
HttpURLConnection urlConnection = null;
try {
URL url = new URL(strUrl);
// Creating an http connection to communicate with url
urlConnection = (HttpURLConnection) url.openConnection();
// Connecting to url
urlConnection.connect();
// Reading data from url
iStream = urlConnection.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(
iStream));
StringBuffer sb = new StringBuffer();
String line = "";
while ((line = br.readLine()) != null) {
sb.append(line);
}
data = sb.toString();
br.close();
iStream.close();
urlConnection.disconnect();
} catch (Exception e) {
Log.d("Exception while downloading url", e.toString());
}
return data;
}
我只是真的墜毀。
感謝支持提前發現錯誤。
現在我修改了我的代碼,並把這個得到的經度和緯度以下的東西,所以現在吐司顯示它只給緯度不經度以及應用程序現在不崩潰,但它不顯示額外的標記,你可以告訴我什麼可能是問題?爲什麼它只返回緯度不是經度? –
嘿兄弟感謝它顯示了所有的緯度,但爲什麼經度仍然是0.0?正如我告訴你,它顯示了包含緯度但經度爲0.0的吐司,你能告訴我爲什麼會發生? –