Подтвердить что ты не робот

OpenStreetMap в Android

Кто-нибудь знает библиотеку для интеграции OpenStreetMap в Android? Я пытаюсь с OSMDROID и MapsForge, больше? Это любопытно, но я нахожу только бесплатные библиотеки.

4b9b3361

Ответ 1

См. http://wiki.openstreetmap.org/wiki/Android для списка программных библиотек, поддерживающих OpenStreetMap на Android. Отказ от ответственности: я являюсь автором одного из них.

Ответ 2

Новый сайт был запущен, чтобы помочь разработчикам использовать OpenStreetMap в Интернете или на мобильных устройствах: http://switch2osm.org/

Ответ 3

Проверьте мой ответ в этом вопросе. Открытые уличные карты api для Android.

Три наиболее популярные библиотеки для использования OSM в android - osmdroid, graphhopper и mapsforge.

Ответ 4

Если вам нужен API, который ближе к Картам Google, вы можете попробовать AnyMaps: https://github.com/car2go/AnyMaps

Ответ 5

зависимости {

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

}

for (int k = 0; k < mBeanList.size(); k ++) {

                        mMyMarkersArray.add(new 

MyMarkers (mBeanList.get(к).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 position;

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

}