2012-08-14 12 views
13

Ktoś wie o bibliotece do integracji OpenStreetMap w systemie Android? Próbuję już z OSMDROID i MapsForge? To ciekawe, ale znajduję tylko bezpłatne biblioteki.OpenStreetMap w Androidzie

Odpowiedz

4

Nowa witryna została uruchomiona, aby pomóc deweloperom za pomocą OpenStreetMap w sieci lub na urządzeniach przenośnych: http://switch2osm.org/

3

Trzy najpopularniejsze biblioteki do używania OSM w Androidzie to osmdroid, graphhopper i mapsforge.

0

zależności {

kompilacji 'org.osmdroid: osmdroid-android: [email protected]'

}

dla (int k = 0, k < mBeanList.size(); 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)); 

        } 

prywatny klasy CustomMarkerInfoWindow rozciąga InfoWindow { int pozycji;

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); 
    } 

}