jobin
jobin

Reputation: 1527

android get latitude and longitude from input location

I have an EditText where location is typed and when the Button is clicked the loaction name is bundled and sent via intent to Details Activity where it receives the location name and gets the latitude and longitude by using Geocoder.But when I try to display it on map unfortunately I am getting a RunTimeException.Below is the code.Is that the correct way to get the latitude and longitude of a place.Please help me. I am new to Google maps.

MainActivity.java:

   public class MainActivity extends AppCompatActivity  {
     AutoCompleteTextView textView;
      ArrayAdapter<String> arrayAdapter; 
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            Log.e("MainActivity:","Started");
            List l = new ArrayList();
            l.add("New Delhi");
            l.add("Mumbai");
            l.add("Chennai");
            l.add("Bangalore");
            Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
            setSupportActionBar(toolbar);
            getSupportActionBar().setTitle("Destination");

            AutoCompleteTextView textView = (AutoCompleteTextView) findViewById(R.id.autocomplete);
           arrayAdapter=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,l);
            textView.setAdapter(arrayAdapter);
            final Bundle bundle =new Bundle();
            bundle.putString("places",textView.getText().toString());


            Button button1 = (Button) findViewById(R.id.enter);
            button1.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(getApplicationContext(),      Details.class);
                    intent.putExtras(bundle);
                    startActivity(intent);
                }
            });

        }}

Details.java:(Map not included,Error at addressList which gets the location details from geocoder)

public class Details extends AppCompatActivity {
SupportMapFragment mapFragment;LatLng latLng;ArrayList<LatLng> markerPoints;LatLng from,to;Polyline polyline;ArrayList<Polyline> polylines;
    private GoogleMap map;LocationManager manager;Double lat,longt;Location location;
    // The minimum distance to change Updates in meters
    private static final long MIN_DISTANCE_CHANGE_FOR_UPDATES = 10; // 10 meters

    // The minimum time between updates in milliseconds
    private static final long MIN_TIME_BW_UPDATES = 1000 * 60 * 1; // 1 minute
    boolean isGPSEnabled = false;

    // flag for network status
    boolean isNetworkEnabled = false;

    boolean canGetLocation = false;
    List<LatLng> latLngslist;
    Marker marker;int i;String cityName,destination;
    int start; ArrayList<LatLng> wapt;Routing routing;
    Geocoder geocoder;int counter=0;
    List<Address> wayptdetails;
    String destinationname;
    double destinationLatitude;
    double destinationLongitude;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.details);
        mapFragment = (SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map1);
        mapFragment.getMapAsync(this);
        getLocation();
        wapt=new ArrayList<LatLng>();
        wayptdetails=new ArrayList<Address>();
      Bundle bundle= getIntent().getExtras();
      destination= bundle.getString("place");
        Geocoder geocoder1=new Geocoder(this,Locale.getDefault());
        try {

           List<Address>      addressList=geocoder1.getFromLocationName(destination,1);
           destinationLatitude= addressList.get(0).getLatitude();
            destinationLongitude=addressList.get(0).getLongitude();
       Log.e("Destination","Location retreived");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }}

Error:

02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: FATAL EXCEPTION: main
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jobinsabu.destination/com.example.jobinsabu.destination.Details}: java.lang.IllegalArgumentException: locationName == null
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2252)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.access$700(ActivityThread.java:153)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:176)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5302)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:  Caused by: java.lang.IllegalArgumentException: locationName == null
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.location.Geocoder.getFromLocationName(Geocoder.java:171)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at com.example.jobinsabu.destination.Details.onCreate(Details.java:78)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5326)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.access$700(ActivityThread.java:153) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:176) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5302) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
02-12 11:39:11.082 399-399/com.example.jobinsabu.destination E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 

Error(Edited):

02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: FATAL EXCEPTION: main
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jobinsabu.destination/com.example.jobinsabu.destination.Details}: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2252)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.access$700(ActivityThread.java:153)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:176)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5302)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:  Caused by: java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at java.util.ArrayList.get(ArrayList.java:304)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at com.example.jobinsabu.destination.Details.onCreate(Details.java:79)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.Activity.performCreate(Activity.java:5326)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1097)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2215)
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2306) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.access$700(ActivityThread.java:153) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1286) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:99) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:176) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5302) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invokeNative(Native Method) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Method.java:511) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1102) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:869) 
02-12 12:00:20.371 4652-4652/com.example.jobinsabu.destination E/AndroidRuntime:     at dalvik.system.NativeStart.main(Native Method) 

Upvotes: 1

Views: 836

Answers (2)

Sasi Kumar
Sasi Kumar

Reputation: 13358

In your code destination empty because you passed places.

  bundle.putString("places",textView.getText().toString());

but received

  destination= bundle.getString("place");
  //change into places.

change like as

 destination= bundle.getString("places");

Before Pass string check textView.getText().toString() is not empty.

Upvotes: 0

ρяσѕρєя K
ρяσѕρєя K

Reputation: 132992

As in Log:

java.lang.IllegalArgumentException: locationName == null

Because destination String is empty which getting from getIntent().

Add places key in Bundle with textView.getText() value on Click of Button as:

 bundle.putString("places",textView.getText().toString());
 intent.putExtras(bundle);

Also use same key for getting same key for getting value in Details Activity which is used in previous Activity.

Upvotes: 1

Related Questions