2012-04-25 16 views
6

osmdroidを使って簡単にアンドロイドアプリケーションを作成していますが、オンラインでもオフラインでも表示できます(オンラインとオフライン)。オーバーレイ(マーカー)を追加したい私はosmdroidでオーバーレイを使用する簡単な例を探していましたが、いくつか試してみましたがうまくいかなかったので、osmdroidを使ってオーバーレイやマルカーを追加する例が必要です。osmdroidのMapViewにオーバーレイを追加する

+0

hello @AbdalwhabBakheet ....あなたのプロジェクトは今解決されましたか?私はネット上でいくつかのチュートリアルを共有するかどうか疑問に思いますか? – gumuruh

答えて

2

ItemizedIconOverlayクラスを見てください。あなたが検索した場合

例は、ここでスタックオーバーフローに掲載された、インターネット上のいくつかの例があります:Adding Overylay to OSMDROID

+1

Martin Pearmanありがとうございました、私はうまく動作しますが、インターネットの使用を必要とし、setUseDataConnection(false)にエラーが発生した場合、オフラインで動作し、マップ内のポイントをマークする方法があります。 –

+0

UseDataConnectionがtrueに設定されているときにコードが機能し、オーバーレイがMapViewに正しく追加されていれば、UseDataConnectionがfalseに設定されているときにも同じコードが機能するはずです。 UseDataConnectionがfalseに設定されているときに、どのようなエラーが表示されますか? –

+0

ありがとうMartin Pearman、私は私のコードを再度テストし、setUseDataConnection(false)で正常に動作します 私は、おそらく私がオーバーレイをダウンロードされていない地図の一部に表示しようとしていたと思います。 –

1
public class mapcode extends Activity { 
    globalvar appState; 
    int stats=0; 
    private MapView mapView; 
    private IMapController mapController; 
    private SimpleLocationOverlay mMyLocationOverlay; 
    private ScaleBarOverlay mScaleBarOverlay; 
    ItemizedIconOverlay<OverlayItem> currentLocationOverlay; 
    DefaultResourceProxyImpl resourceProxy; 

    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
     setContentView(R.layout.map); 

     appState = ((globalvar) getApplicationContext()); 





     mapView = (MapView) this.findViewById(R.id.mapview); 
     mapView.setTileSource(TileSourceFactory.MAPNIK); 
     // mapView.setBuiltInZoomControls(true); //кнопка ZOOM +- 
     mapView.setMultiTouchControls(true); 

     mapController = this.mapView.getController(); 
     mapController.setZoom(2); 

     this.mMyLocationOverlay = new SimpleLocationOverlay(this);       
     this.mapView.getOverlays().add(mMyLocationOverlay); 

     this.mScaleBarOverlay = new ScaleBarOverlay(this);       
     this.mapView.getOverlays().add(mScaleBarOverlay); 


     ///////////////// 
     resourceProxy = new DefaultResourceProxyImpl(getApplicationContext()); 
     GeoPoint currentLocation = new GeoPoint(55.860863,37.115046); 
     GeoPoint currentLocation2 = new GeoPoint(55.8653,37.11556); 
     OverlayItem myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation); 
     Drawable myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a); 
     myLocationOverlayItem.setMarker(myCurrentLocationMarker); 

     final ArrayList<OverlayItem> items = new ArrayList<OverlayItem>(); 
     items.add(myLocationOverlayItem); 



     myLocationOverlayItem = new OverlayItem("Here", "Current Position", currentLocation2); 
    myCurrentLocationMarker = this.getResources().getDrawable(R.drawable.a); 
     myLocationOverlayItem.setMarker(myCurrentLocationMarker); 


     items.add(myLocationOverlayItem); 



     currentLocationOverlay = new ItemizedIconOverlay<OverlayItem>(items, 
       new ItemizedIconOverlay.OnItemGestureListener<OverlayItem>() { 
        public boolean onItemSingleTapUp(final int index, final OverlayItem item) { 
         return true; 
        } 
        public boolean onItemLongPress(final int index, final OverlayItem item) { 
         return true; 
        } 
       }, resourceProxy); 
     this.mapView.getOverlays().add(this.currentLocationOverlay); 

mapView.invalidate(); //длятогочтобымаркерыпоявились }

関連する問題