3

Android の Geocoder を使用して、地図ベースのアプリで場所を検索できるようにしています。ジオコーディングはうまく機能し、アプリはジオコーディング結果で MapView を正常に中心に配置します。問題は、新しい場所に移動するときに使用するズーム レベルがわからないことです。パラメータは、通りまたは国である可能性があります。location_query結果の場所を表示するためにズームインする方法をどのように知ることができますか? つまり、何と交換???しますか?

public void goToPlace(String location_query) {

    List<Address> addresses;
    Geocoder gc = new Geocoder(_ctx);

    addresses = gc.getFromLocationName(location_query, 1);
    if (addresses != null) {
        Address a = addresses.get(0);
        int lat = (int) (a.getLatitude() * 1E6);
        int lon = (int) (a.getLongitude() * 1E6);
        mapController.animateTo(new GeoPoint(lat, lon));
        mapController.setZoom(???);
    }
}
4

3 に答える 3

3

私の考えはgetAddressLine、適切なズームレベルを選択する方法を使用することです。ドキュメントが言うように:

指定されたインデックス (0 から始まる) で番号付けされたアドレスの行を返します。そのような行が存在しない場合は null を返します。

したがって、国の場合は 1 行の住所のみが返され、都市の場合は 2 行、通りの場合は 3 行が返されます。ケースごとに、異なるズーム レベルを使用できます。

于 2011-10-10T08:54:06.133 に答える
2

Android Geocoding API は、緯度と経度のみを提供します。一方、Web Geocoding API は、マップをズームするために必要な緯度、経度、およびビューポートを提供します。要点は、Google が Android API の拡張を決定するまでは、Web API を使用して不足しているビューポートのズーム データを取得する必要があるということです。

幸いなことに、GeocoderPlus ライブラリのおかげで、Web API の使用はそれほど難しくありません。このライブラリは、すべての Web API リクエストと JSON 解析を行い、結果として Java オブジェクトのみを返します。ネイティブの Geocoder に似たインターフェイスを備えており、Android アプリに含めるために JAR 形式で利用できます。

使用方法については、以下のブログ記事をご覧ください: http://bricolsoftconsulting.com/perfect-geocoding-zoom-part-2/

于 2011-11-08T03:32:22.193 に答える
0

表示するポイントが1つしかないため、setZoom(18)などを実行できます。

複数のポイントがある場合、必要なのはzoomToSpanです。あなたがする必要があるのは、最小と最大のlat / lngペアがその間の差を上記の関数に渡して、最適なズームレベルを取得することです。

于 2011-04-26T14:57:50.667 に答える