Итак, у меня есть мои карты Google, и то, что я делаю, это получить широту и долготу с моего сервера в виде строки, а затем конвертировать их в место LatLng. Проблема, с которой я столкнулась, заключается в том, что если телефон не забирает местоположение gps, он хранит пустую строку в моей базе данных, а затем, когда карты Google попытаются ее отобразить, она отключает мое приложение для всех пользователей, пытающихся получить доступ к карте. Который я собираю из пустой строки, потому что, если я удалю ее из своей базы данных, все снова отлично работает. То, что мне нужно знать, это лучший способ проверить пустую строку или null LatLng и пропустить ее, чтобы она не разбилась.Google Map crash null LatLng
EDIT CODE ОБНОВЛЕНО
for (int i = 0; i < marker_list.size(); i+=2)
{
String lat = marker_list.get(i);
String lng = marker_list.get(i+1);
// NEED TO MAKE SURE CHECK BEFORE HERE AND IF LOCATION DOESN'T EXIST SKIP TO NEXT.
if (lat == "" || lng == "")
{
continue;
}
else
{
double lat_ = Double.valueOf(lat);
double lng_ = Double.valueOf(lng);
LatLng location = new LatLng(lat_, lng_);
map.addMarker(new MarkerOptions()
.position(location)
.title(title)
.snippet(index)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.event)));
}
}
01-28 00:33:58.060: E/AndroidRuntime(919): FATAL EXCEPTION: main
01-28 00:33:58.060: E/AndroidRuntime(919): Process: com.databasedemo, PID: 919
01-28 00:33:58.060: E/AndroidRuntime(919): java.lang.NumberFormatException: Invalid double: ""
01-28 00:33:58.060: E/AndroidRuntime(919): at java.lang.StringToReal.invalidReal(StringToReal.java:63)
01-28 00:33:58.060: E/AndroidRuntime(919): at java.lang.StringToReal.parseDouble(StringToReal.java:248)
01-28 00:33:58.060: E/AndroidRuntime(919): at java.lang.Double.parseDouble(Double.java:295)
01-28 00:33:58.060: E/AndroidRuntime(919): at java.lang.Double.valueOf(Double.java:332)
01-28 00:33:58.060: E/AndroidRuntime(919): at com.databasedemo.Map$PrefetchData.onPostExecute(Map.java:257)
01-28 00:33:58.060: E/AndroidRuntime(919): at com.databasedemo.Map$PrefetchData.onPostExecute(Map.java:1)
01-28 00:33:58.060: E/AndroidRuntime(919): at android.os.AsyncTask.finish(AsyncTask.java:632)
01-28 00:33:58.060: E/AndroidRuntime(919): at android.os.AsyncTask.access$600(AsyncTask.java:177)
01-28 00:33:58.060: E/AndroidRuntime(919): at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:645)
01-28 00:33:58.060: E/AndroidRuntime(919): at android.os.Handler.dispatchMessage(Handler.java:102)
01-28 00:33:58.060: E/AndroidRuntime(919): at android.os.Looper.loop(Looper.java:136)
01-28 00:33:58.060: E/AndroidRuntime(919): at android.app.ActivityThread.main(ActivityThread.java:5017)
01-28 00:33:58.060: E/AndroidRuntime(919): at java.lang.reflect.Method.invokeNative(Native Method)
01-28 00:33:58.060: E/AndroidRuntime(919): at java.lang.reflect.Method.invoke(Method.java:515)
01-28 00:33:58.060: E/AndroidRuntime(919): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:779)
01-28 00:33:58.060: E/AndroidRuntime(919): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:595)
01-28 00:33:58.060: E/AndroidRuntime(919): at dalvik.system.NativeStart.main(Native Method)
Пожалуйста, ваши ошибки LogCat. Вы получаете 'String lat' и' String lng 'null? – GrIsHu
Если вы пытаетесь проверить, что строка имеет значение «null», используйте if («null» .equals (lat) && «null» .equals (lng)) вместо –
По-прежнему такая же ошибка, используя if ("null" .equals (lat) && "null" .equals (lng)) – Jayce