从地址中查找纬度和经度

时间:2017-12-07 18:10:18

标签: android dictionary indexoutofboundsexception

我试图通过使用地址在android中的地图上显示标记 这是我的代码:

public void onMapReady(GoogleMap googleMap){
    mMap = googleMap;
    Geocoder coder= new Geocoder(this);
    try
    {
        String straddress = "155 Park Theater,Palo Alto,CA";
        Double latitude = 0.0;
        Double longitude = 0.0;
        List<Address> addresses = coder.getFromLocationName("155 Park Theater,Palo Alto,CA",1);
        Address location = addresses.get(0);
        LatLng p1 = new LatLng(location.getLatitude(), location.getLongitude());
        mMap.addMarker(new MarkerOptions().position(p1).title("California"));
        mMap.moveCamera(CameraUpdateFactory.newLatLng(p1));
    }
    catch (Exception e)
    {
        e.printStackTrace();
    }
}

如果我没有输入街道号码,那么它会显示标记。 但是,它只会在街上显示标记。我想要特定位置的标记。

我在输入带有街道号码的整个地址时遇到以下错误。 “地址”列表为空。

java.lang.IndexOutOfBoundsException: Index: 0, Size: 0

1 个答案:

答案 0 :(得分:0)

使用以下代码更新您的代码:

 List<Address> address;
 LatLng latLng = null;

try {
    address = coder.getFromLocationName(strAddress,5);
    if (address==null) {
       return null;
    }
    Address location=address.get(0);
    latLng = new LatLng(location.getLatitude(),location.getLongitude());
    }