2011-12-11 6 views
1

Googleマップを使用すると、私たちが望む任意の場所を特定することができます。ピンを指した後、プッシュピンの上部にこの「バブル」ポップアップボックスが表示されます。私はポップアップウィンドウボックスを行う方法を知っているかもしれませんか?表示するコードはありますか?私は今、警告ダイアログボックスを使用していますが、代わりに「バブル」ポップアップウィンドウにしたい。バブルのポップアップボックス

List<Overlay> mapOverlays = mapView.getOverlays(); 
     MapOverlay mapOverlay = new MapOverlay(); 

     mapOverlays.add(mapOverlay); 

     // obtain gps location 
     lm = (LocationManager) getSystemService(Context.LOCATION_SERVICE); 

     locationListener = new MyLocationListener(); 

     lm.requestLocationUpdates(
     // LocationManager.GPS_PROVIDER, 
       LocationManager.NETWORK_PROVIDER, 0, 0, locationListener); 
    } 

    private class MyLocationListener implements LocationListener { 

     @Override 
     public void onLocationChanged(Location loc) { 

      k = new GeoPoint((int) (loc.getLatitude() * 1E6), 
        (int) (loc.getLongitude() * 1E6)); 
      mc.animateTo(k); 
      mc.setZoom(18); 

      // Add a location marker 
      MapOverlay mapOverlay = new MapOverlay(); 
      List<Overlay> listofOverlays = mapView.getOverlays(); 
      listofOverlays.clear(); 
      listofOverlays.add(mapOverlay); 

      // invalidate() method forces the MapView to be redrawn 
      mapView.invalidate(); 
     } 

     @Override 
     public void onProviderDisabled(String provider) { 
     } 

     @Override 
     public void onProviderEnabled(String provider) { 
     } 

     @Override 
     public void onStatusChanged(String provider, int status, Bundle extras) { 
     } 
    } 

    @Override 
    protected boolean isRouteDisplayed() { 
     return false; 
    } 

    class MapOverlay extends com.google.android.maps.Overlay { 

     @Override 
     public boolean onTap(final GeoPoint p, MapView mapView) { 
      // TODO Auto-generated method stub 

      k = p; 
      mc = mapView.getController(); 
      mc.animateTo(p); 

      mapView.invalidate(); 

      Geocoder geoCoder = new Geocoder(getBaseContext(), 
        Locale.getDefault()); 
      try { 
       List<Address> addresses = geoCoder.getFromLocation(
         p.getLatitudeE6()/1E6, p.getLongitudeE6()/1E6, 1); 
       String add = ""; 
       if (addresses.size() > 0) { 
        for (int i = 0; i < addresses.get(0) 
          .getMaxAddressLineIndex(); i++) 
         add += addresses.get(0).getAddressLine(i) + "\n"; 
        txtAddress.setText("Address: " + add); 
       } 
@Override 
     public boolean draw(Canvas canvas, MapView mapView, boolean shadow, 
       long when) { 
      super.draw(canvas, mapView, shadow); 
      if (k != null) { 
       // ---translate the GeoPoint to screen pixels--- 
       Point screenPts = new Point(); 
       mapView.getProjection().toPixels(k, screenPts); 

       // ---add the marker--- 
       Bitmap bmp = BitmapFactory.decodeResource(getResources(), 
         R.drawable.passenger); 
       canvas.drawBitmap(bmp, screenPts.x, screenPts.y - 50, null); 
      } 
      return true; 
     } 
    } 
} 

答えて

0

あなたはInfoWindowのような感じです。ちなみに、APIの新しいバージョンでは、丸みのある角がありません(箱のようになり、気泡に似ていないように見えます)。地図APIをロードするjavascript URLに以前のバージョンのAPIをリクエストすることで、古いものを復元できます。

+0

私は本当にあなたが意味するものは得られません。コード例はありますか?どのようにコードを入れるのですか? – sowhat

+0

私はあなたに送ったリンクを読んだことがありますか?コード例があります。また、InfoWindow APIリファレンスは次のURLから参照できます。http://code.google.com/apis/maps/documentation/javascript/reference.html#InfoWindow – danludwig

1

私は現在、「Bubble」ポップアップを表示する必要があったマッピングアプリケーションに取り組んでいます。次のブログ記事は私をかなり助けました。

This first postは、ポップアップを生成するためにビューに埋め込まれた9パッチイメージを使用する方法を示しています。コードは問題ありませんが、いくつかのコメントが明確化のためにいくつかの追加ソースコードを要求しています。

This post from the Android Developers blogは、どのように9パッチ画像を作成するかを説明します。

これらの2つの投稿を使用して、私はいくつかのコードを一緒に引き出すことができました。うまくいけば、あなたのニーズに合わせてそれを操作することもできます。

+1

これまでのアップデート - 最初の投稿は自分のブログにあります。誰かを助ける場合に備えて、そこに完全なソースコードへのリンクを追加しました。 – actionshrimp

+0

更新していただきありがとうございます。そしてその情報源から、本当に有益な記事が見つかりました。 – DilbertDave

0

Googleではこれを行うためのAPIは提供していません。thisをご覧ください。ビクターの答えは、法案に適合するオープンソースコードへのリンクを提供します。

関連する問題