Пример #1
0
        /**
         * The TileProvider is set here.
         * The Context is set externally by the NavigationDrawer / MainActivity
         *
         * @param aTileProvider
         */

        public void SetTileProvider(MapTileProviderBase aTileProvider)
        {
            if (mMapView != null)
            {
                RemoveView(mMapView);
            }

            IResourceProxy resourceProxy = new DefaultResourceProxyImpl(Context);
            var            newMapView    = new MapView(Context, 1024, resourceProxy, aTileProvider);

            if (mMapView != null)
            {
                //restore as much parameters as possible from previous mMap:
                var mapController = newMapView.Controller;
                mapController.SetZoom(mMapView.ZoomLevel);
                mapController.SetCenter(mMapView.MapCenter);
                newMapView.SetBuiltInZoomControls(true); //no way to get old setting
                newMapView.SetMultiTouchControls(true);  //no way to get old setting
                newMapView.SetUseDataConnection(mMapView.UseDataConnection());
                newMapView.MapOrientation      = mMapView.MapOrientation;
                newMapView.ScrollableAreaLimit = mMapView.ScrollableAreaLimit;
                var overlays = mMapView.Overlays;
                foreach (var o in overlays)
                {
                    newMapView.Overlays.Add(o);
                }
            }

            mMapView = newMapView;
            AddView(mMapView);
        }
        private void InitMapView()
        {
            var mapView = FindViewById<MapView>(R.Id.mapView);  // mapPath

            ITileSource tileSource = TileSourceFactory.Mapnik;

            mapView.SetTileSource(tileSource);
            mapView.TilesScaledToDpi = true;
            mapView.SetMultiTouchControls(true);
            mapView.Zoom += mapView_Zoom;
            mapView.Scroll += mapView_Scroll;

            //---------------���õ�ͼ��ת-------------------
            //_mRotationGestureOverlay = new RotationGestureOverlay(this, mapView);
            //_mRotationGestureOverlay.Enabled = true;
            //mapView.Overlays.Add(_mRotationGestureOverlay);

            mapController = mapView.Controller;
            mapController.SetZoom(15);
            GeoPoint startPoint = new GeoPoint(30.538079, 114.4159972);
            mapController.SetCenter(startPoint);

            DefaultResourceProxyImpl resourceProxy = new DefaultResourceProxyImpl(this);
            myLocationoverlay = new MyLocationNewOverlay(this, new GpsMyLocationProvider(this), mapView);
            myLocationoverlay.EnableMyLocation(); // not on by default
            myLocationoverlay.RunOnFirstFix(this);
            mapView.Overlays.Add(myLocationoverlay);
            _mapView = mapView;
        }
Пример #3
0
        protected async override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);
            SetContentView(Resource.Layout.Main);
            SupportActionBar.DisplayOptions = (int)ActionBarDisplayOptions.ShowCustom;
            SupportActionBar.SetCustomView(Resource.Layout.ActionBar_Moses);
            _sos        = SupportActionBar.CustomView.FindViewById <RelativeLayout>(Resource.Id.sos);
            _myLocation = SupportActionBar.CustomView.FindViewById <RelativeLayout>(Resource.Id.where_i);
            _layers     = SupportActionBar.CustomView.FindViewById <RelativeLayout>(Resource.Id.layers);

            _sos.Click += delegate(object sender, EventArgs args)
            {
                Toast.MakeText(this, "Help me!!!!", ToastLength.Long).Show();
            };
            _layers.Click += delegate(object sender, EventArgs args)
            {
                AlertDialog.Builder builderSingle = new AlertDialog.Builder(this);
                builderSingle.SetTitle("Type");

                ArrayAdapterWithIcon arrayAdapter = new ArrayAdapterWithIcon(
                    this,
                    Android.Resource.Layout.select_dialog_singlechoice_material);
                arrayAdapter.Add(new ListItem()
                {
                    ImageResourceId = Resource.Drawable.tse_tse
                });
                arrayAdapter.Add(new ListItem()
                {
                    ImageResourceId = Resource.Drawable.grass
                });
                arrayAdapter.Add(new ListItem()
                {
                    ImageResourceId = Resource.Drawable.water
                });
                arrayAdapter.Add(new ListItem()
                {
                    ImageResourceId = Resource.Drawable.fire
                });
                builderSingle.SetNegativeButton("Cancel", NegativeHandler);
                builderSingle.SetAdapter(arrayAdapter, this);
                builderSingle.Show();
            };
            _myLocation.Click += delegate(object sender, EventArgs args)
            {
                _mapController.SetCenter(_centreOfMap);
            };
            //StyleInterpreter interpreter = null;
            try
            {
                bool isTile = true;
                //List<OsmGeo> osm = null;
                if (isTile)
                {
                    _mapView = FindViewById <MapView>(Resource.Id.mapview);
                    _mapView.SetTileSource(TileSourceFactory.DefaultTileSource);
                    _mapView.SetBuiltInZoomControls(true);
                    //_mapView.SetUseDataConnection(false);

                    _provider = new CustomLocationProvider(this);
                    _provider.StartLocationProvider(new MyLocationNewOverlay(this, _mapView));

                    //List<OverlayItem> overlayItemArray = new List<OverlayItem>();
                    //OverlayItem olItem = new OverlayItem("Here", "SampleDescription", new GeoPoint(34.878039, -10.650));
                    //overlayItemArray.Add(olItem);
                    //olItem.SetMarker(Resources.GetDrawable(Resource.Drawable.cloud));
                    //overlayItemArray.Add(new OverlayItem("Hi", "You're here", new GeoPoint(34.888039, -10.660)));


                    DefaultResourceProxyImpl defaultResourceProxyImpl = new DefaultResourceProxyImpl(this);
                    //ItemizedIconOverlay myItemizedIconOverlay = new ItemizedIconOverlay(overlayItemArray, null, defaultResourceProxyImpl);
                    //_mapView.Overlays.Add(myItemizedIconOverlay);

                    //PathOverlay myPath = new PathOverlay(Color.Red, this);
                    //myPath.AddPoint(new GeoPoint(34.878039, -10.650));
                    //myPath.AddPoint(new GeoPoint(34.888039, -10.660));
                    //_mapView.Overlays.Add(myPath);

                    _mapController = _mapView.Controller;
                    _mapController.SetZoom(6);

                    _mapController.SetCenter(_centreOfMap);

                    _geoService = new CouchDbGeoObjectsService();

                    //var firstPoint = ((GeoJSON.Net.Geometry.Point) points.Features[0].Geometry);
                    var firstPoint = new OsmSharp.Geo.Geometries.Point(new OsmSharp.Math.Geo.GeoCoordinate(33, -10));
                    //double x = ((GeographicPosition) firstPoint.Coordinates).Latitude;
                    //double y = ((GeographicPosition)firstPoint.Coordinates).Longitude;
                    //List<OverlayItem> overlayItemArray = new List<OverlayItem>();
                    //OverlayItem olItem = new OverlayItem("Here", "SampleDescription", new GeoPoint(x, y));
                    //overlayItemArray.Add(olItem);
                    //olItem.SetMarker(Resources.GetDrawable(Resource.Drawable.cloud));

                    //ItemizedIconOverlay newPoints = new ItemizedIconOverlay(overlayItemArray, null, defaultResourceProxyImpl);
                    //_mapView.Overlays.Add(newPoints);
                }
                else
                {
                    /*List<OsmGeo> osm = await _service.DownloadArea(34.878039, -10.465, 36, -9.077);
                     * if (osm != null)
                     * {
                     * Native.Initialize();
                     *
                     * // initialize map.
                     * var map = new Map();
                     * interpreter = new MapCSSInterpreter(css);
                     *
                     * IDataSourceReadOnly source = new MemoryDataSource(osm.ToArray());
                     * var layer = map.AddLayerOsm(source, interpreter);
                     *
                     * _mapView = new MapView(this, new MapViewSurface(this));
                     * _mapView.Map = map;
                     * _mapView.MapMaxZoomLevel = 17; // limit min/max zoom because MBTiles sample only contains a small portion of a map.
                     * _mapView.MapMinZoomLevel = 1;
                     * _mapView.MapTilt = 0;
                     * _mapView.MapCenter = new GeoCoordinate(-9.2, 36);
                     * _mapView.MapZoom = 2;
                     * _mapView.MapAllowTilt = false;
                     *
                     * //OsmSharp.Data.SQLite.SQLiteConnectionBase sqLiteConnection = new SQLiteConnection("osmMap");
                     *
                     * frame.AddView(_mapView);
                     * var textLabel = FindViewById<TextView>(Resource.Id.text_label);
                     * textLabel.Text = "Изображение подгрузилось";
                     * Toast.MakeText(this, "Read success", ToastLength.Long).Show();
                     * }
                     * else
                     * {
                     * Toast.MakeText(this, "OSM is null", ToastLength.Long).Show();
                     * }*/
                }
            }
            catch (Exception exception)
            {
                Toast.MakeText(this, exception.Message, ToastLength.Long).Show();
                SetContentView(Resource.Layout.Main);
            }
        }