Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Map crash null LatLng

So I have my google maps, and what I do is get the latitude and longitude from my server as a string then I convert them to a LatLng location. The problem I am having is if the phone doesn't pick up the gps location it stores a empty string in my database and then when the google maps trys to display it, it crashes my app for all users trying to access the map. Which I am gathering is from the empty string, cause if i delete that one from my database everything works fine again. What I need to know is the best way to check from empty string or null LatLng and skip over it so it won't crash.

EDIT CODE UPDATED

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)
like image 640
Jayce Avatar asked May 26 '26 20:05

Jayce


1 Answers

Try out as below:

     String lat = marker_list.get(i);
     String lng = marker_list.get(i+1);
     if(!lat.isEmpty() && !lng.isEmpty())
     {
        try{
         double lat_ = Double.parseDouble(lat);
         double lng_ = Double.parseDouble(lng);
    }catch(NumberFormatException e){}
       }
like image 83
GrIsHu Avatar answered May 28 '26 10:05

GrIsHu