2012-08-14 3 views
13

Android에서 OpenStreetMap을 통합하기위한 라이브러리에 대해 알고 계신가요? OSMDROID 및 MapsForge를 사용해보세요. 궁금한 점이 있지만 무료 라이브러리 만 찾을 수 있습니다.Android의 OpenStreetMap

답변

8

안드로이드에 OpenStreetMap에 지원 소프트웨어 라이브러리의 목록은 http://wiki.openstreetmap.org/wiki/Android을 참조하십시오. 면책 조항 : 나는 그 중 한 사람의 저자입니다.

4

새로운 사이트는 웹 또는 모바일 장치에서 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 
01,235 16,

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가 InfoWindow는 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); 
    } 

}