我在数据库中有超过700个地址。 我想区域划分他们。 我已经实现了这段代码:
public LatLng getSingleLocationFromAddress(String strAddress)
{
Geocoder coder = new Geocoder(this, Locale.getDefault());
List<Address> address = null;
Address location = null;
GeoPoint p1 = null;
LatLng temp = null;//new LatLng(26.0000, 121.0000);
String strAddresNew = strAddress.replace(",", " ");
try
{
address = coder.getFromLocationName(strAddresNew, 1);
if (!address.isEmpty())
{
location = address.get(0);
location.getLatitude();
location.getLongitude();
temp = new LatLng(location.getLatitude(), location.getLongitude());
Log.d("Latlng : ", temp + "");
} else
{
arrTemp.add(strAddress);
System.out.println(arrTemp);
}
} catch (IOException e)
{
Toast.makeText(mContext, e.toString(), Toast.LENGTH_LONG).show();
e.printStackTrace();
} catch (Exception e)
{
e.printStackTrace();
}
return temp;
}
但问题是当我像这样在循环中调用此方法时:
Marker TP1 = googleMap.addMarker(new MarkerOptions().position(getSingleLocationFromAddress(fullAddress)));
对于某些地址,行coder.getFromLocationName(strAddresNew, 1);
返回null,例如,如果我有ArrayList
个7个地址,那么我只获得4-5个LatLong值。
答案 0 :(得分:1)
使用以下代码行...对您有帮助
将这些变量声明为您的 Oncreate 或 OncreatView
List<Address> From_geocode = null;
private double sLat, sLong;
private Geocoder geocoder;
在你的内部 oncreate 或 oncreateVIew 使用这些代码行
geocoder = new Geocoder(getActivity());
try {
From_geocode = geocoder.getFromLocationName("PUT THE ADDRESS HERE", 1);
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
if (From_geocode.size() > 0) {
System.out.println("2");
From_geocode.get(0).getLatitude(); // getting
// latitude
From_geocode.get(0).getLongitude();
sLat = From_geocode.get(0).getLatitude();
sLong = From_geocode.get(0).getLongitude();
System.out.println("LATITUTE====="+sLat+" LONGITUTE====="+sLong);
}
并在清单文件
中提供条目<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
答案 1 :(得分:0)
虽然谷歌数据库很广泛,但您提供的某些地址可能无法进行地理编码。因此,你不会得到那些地址的纬度/经度。您可以检查响应的状态。
如下面的链接所述
https://developers.google.com/maps/documentation/geocoding/#StatusCodes
地理编码响应对象中的“状态”字段包含请求的状态,并且可能包含调试信息,以帮助您确定地理编码无法正常工作的原因。 “status”字段可能包含以下值:
“确定”表示没有发生错误;地址已成功解析,并且至少返回了一个地理编码。
- 醇>
“ZERO_RESULTS”表示地理编码成功但未返回任何结果。如果地理编码器被传递给不存在的地址,则可能会发生这种情况。