在谷歌地图片段中按街道名称搜索

时间:2014-08-27 22:30:45

标签: android google-maps android-fragments

是否可以拥有搜索功能 - 例如在操作栏中 - 可以在Google地图片段中搜索街道名称?我正在开发一个应用程序,这将是非常有用的。如果应用程序可以导航到该位置。

1 个答案:

答案 0 :(得分:6)

是的,你可以借助Geocoder课程。 AFAIK内置的Android Geocoder依赖于ESRI的地理编码Web服务。

Geocoder geocoder = new Geocoder(this);
List<Address> addresses = null;
try {
    // Find a maximum of 3 locations with the name Kyoto
    addresses = geocoder.getFromLocationName("Kyoto", 3);
} catch (IOException e) {
    e.printStackTrace();
}
if (addresses != null) {
    for (Address loc : addresses) {
        MarkerOptions opts = new MarkerOptions()
                .position(new LatLng(loc.getLatitude(), loc.getLongitude()))
                .title(loc.getAddressLine(0));
        mMap.addMarker(opts);
    }
}

注意:

  • 地理编码过程是同步的,可能需要一段时间。您建议将其包装在AsyncTask中。
  • 可以在Android Docs上找到更多信息(像往常一样)。
  • 您也可以使用Google的地理编码API,但却有limits

修改

基于esri's arcgis developer website,Geocoder依赖于ESRI的网络服务。我也对此感到惊讶,但这有点意义,因为谷歌的地理位置API有局限性,而Android({1}}位置功能没有(我不知道)限制