2011-09-10 8 views
0

ジオコーディングを使用して住所を取得し、経度と緯度を計算してマップにオーバーレイを表示しようとしています。ジオコーディングコードが機能しない - Googleマップ

私は以下のコードを使用していますが、ログエントリLog.e( "Found"、 "+ lat");私はなぜトリガーしないのかわかりません。誰でも助けることができますか?

ありがとうございます!

private void showpins() throws IOException { 

    Geocoder gc = new Geocoder(this); 

    String Address = "Oxford Street, London"; 

    Log.e("Lat",""+Address); 

     List<Address> foundAdresses = gc.getFromLocationName(Address, 5); //Search addresses 

     int lat; 
     int lon; 

     for (int i = 0; i < foundAdresses.size(); ++i) { 

      Address x = foundAdresses.get(i); 
      lat = (int) x.getLatitude(); 
      lon = (int) x.getLongitude(); 

      Log.e("Found",""+lat); 

    List<Overlay> mapOverlays = mapView.getOverlays(); 
    Drawable drawable = this.getResources().getDrawable(R.drawable.pushpin); 
    CustomizedItemOverlay itemizedOverlay = 
    new CustomizedItemOverlay(drawable, this); 

    GeoPoint point = new GeoPoint(lat, lon); 
    OverlayItem overlayitem = 
     new OverlayItem(point, "Hello", "Location"); 

    itemizedOverlay.addOverlay(overlayitem); 
    mapOverlays.add(itemizedOverlay); 

    } 

     } 

答えて

1

特定のエミュレータAPIレベルでこれに明確な問題があります。 Issue 8816: service not availableを参照してください。たとえば、APIレベル8は機能しません。 APIレベル7は、メソッドを2回呼び出すとOKです。実際のデバイスでの動作は私には分かりません。私は、サービスが常に利用可能であることをGoogleが保証するとは思わない。

+0

Urg - 他の選択肢があるかどうか、実際のデバイスで動作するかどうかは分かりません。 – GuybrushThreepwood

+0

JSONの回避策があります。リンクのコメント21を参照してください。私はそれを試していない。 – NickT

+0

ありがとうございます - JSONオプションはうまくいきます。 – GuybrushThreepwood

1

いずれかのアドレスがGoogleマップのアドレスデータベースにないか、アプリにインターネットアクセス権限がありません。

  1. http://maps.google.comにアドレスが実際に存在することを確認します。

  2. そのアプリにはインターネットアクセス権があります。あなたはypurアプリマニフェストでこれを持っている必要があります。

    <uses-permission android:name="android.permission.INTERNET" /> 
    
関連する問題