2012-08-14 17 views
13

AndroidにOpenStreetMapを統合するためのライブラリがありますか?私はOSMDROIDとMapsForgeをもう試してみませんか?不思議なことですが、私は無料の図書館しか見つけません。AndroidのOpenStreetMap

答えて

8

は、Android上でOpenStreetMapのを支援するソフトウェアライブラリのリストについては、http://wiki.openstreetmap.org/wiki/Androidを参照してください。免責事項:私はそのうちの1人の著者です。

4

新しいサイトは、Web上またはモバイルデバイス上でOpenStreetMapのを使用して開発者を支援するために発足されました:http://switch2osm.org/

3

アンドロイドでOSMを使用するための3つの最も一般的なライブラリは、osmdroid、graphhopper、およびmapsforgeです。

0

依存関係{

コンパイル 'org.osmdroid:osmdroid-アンドロイド:[email protected]'

}

ため(int型のk = 0; < mBeanList.sizeを(k)は、k個++){

     mMyMarkersArray.add(new 

MyMarkers(mBeanList.get(K).getSpecies()、

       mBeanList.get(k).getArea(), mBeanList.get(k).getTaxon(), 
           Double.parseDouble(mBeanList.get(k).getLatitude()), 
           Double.parseDouble(mBeanList.get(k).getLongitude()), 

           mBeanList.get(k).getDate(), mBeanList.get(k).getTime())); 



         org.osmdroid.views.overlay.Marker osmMarker = new org.osmdroid.views.overlay.Marker(mOpenStreetMapView); 
         Drawable newMarker = ContextCompat.getDrawable(OpenStreetMapActivity.this, R.mipmap.ic_map_72); 
         GeoPoint startPoint = new GeoPoint(Double.parseDouble(mBeanList.get(k).getLatitude()), Double.parseDouble(mBeanList.get(k).getLongitude())); 
         osmMarker.setIcon(newMarker); 
         osmMarker.setPosition(startPoint); 
         osmMarker.setAnchor(org.osmdroid.views.overlay.Marker.ANCHOR_CENTER, org.osmdroid.views.overlay.Marker.ANCHOR_BOTTOM); 

         mOpenStreetMapView.getOverlays().add(osmMarker); 
         mOpenStreetMapView.invalidate(); 
         mOpenStreetMapView.setMinZoomLevel(2); 
         IMapController mapController = mOpenStreetMapView.getController(); 
         GeoPoint geoIndia = new GeoPoint(20.593684, 78.962880); 
         mapController.setZoom(3); 
         mapController.setCenter(geoIndia); 

         osmMarker.setInfoWindow(new CustomMarkerInfoWindow(mOpenStreetMapView, k)); 

        } 

プライベートクラスCustomMarkerInfoWindowは情報ウィンドウ{ INT位置を拡張し、

LinearLayout linearLayout; 

    //Constructor 
    public CustomMarkerInfoWindow(MapView mOpenStreetMapView, int pos) { 
     super(R.layout.bonuspack_bubble_black, mOpenStreetMapView); 

     linearLayout = (LinearLayout) mView.findViewById(R.id.linear_lay_out_bonuspack_bubble); 
     //linearLayout.setVisibility(View.GONE); 
     //mOpenStreetMapView.getOverlays().clear(); 
     this.position = pos; 
    } 

    @Override 
    public void onOpen(Object item) { 
     //super.onOpen(item); 
     linearLayout.setVisibility(View.VISIBLE); 
     TextView species = (TextView) mView.findViewById(R.id.bonuspack_bubble_text_view_species_name); 
     species.setText(mBeanList.get(position).getSpecies()); 
     TextView area = (TextView) mView.findViewById(R.id.bonuspack_bubble_text_view_address); 
     area.setText(mBeanList.get(position).getArea()); 
     TextView taxon = (TextView) mView.findViewById(R.id.bonuspack_bubble_text_view_taxon); 
     taxon.setText(mBeanList.get(position).getTaxon()); 
     TextView dateTime = (TextView) mView.findViewById(R.id.bonuspack_bubble_text_view_date_time); 
     dateTime.setText(mBeanList.get(position).getDate()); 

     linearLayout.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       linearLayout.setVisibility(View.GONE); 
      } 
     }); 
    } 

    @Override 
    public void onClose() { 
     //super.onClose(); 
     //linearLayout.setVisibility(View.GONE); 
    } 

} 
関連する問題