コード例 #1
0
        protected override void OnCreate(Android.OS.Bundle savedInstanceState)
        {
            base.OnCreate(savedInstanceState);

            AddOnlineBaseLayer(CartoBaseMapStyle.CartoBasemapStylePositron);

            // read json from assets and add to map
            string json;

            using (System.IO.StreamReader sr = new System.IO.StreamReader(Assets.Open("cities15000.geojson")))
            {
                json = sr.ReadToEnd();
            }

            // Initialize a local vector data source
            LocalVectorDataSource source = new LocalVectorDataSource(BaseProjection);

            // Initialize a vector layer with the previous data source
            ClusteredVectorLayer layer = new ClusteredVectorLayer(source, new MyClusterElementBuilder(this));

            layer.MinimumClusterDistance = 50;

            new System.Threading.Thread((obj) =>
            {
                // Create a basic style, as the ClusterElementBuilder will set the real style
                var markerStyleBuilder  = new MarkerStyleBuilder();
                markerStyleBuilder.Size = 14;
                MarkerStyle style       = markerStyleBuilder.BuildStyle();

                // Read GeoJSON, parse it using SDK GeoJSON parser
                GeoJSONGeometryReader reader = new GeoJSONGeometryReader();

                // Set target projection to base (mercator)
                reader.TargetProjection = BaseProjection;
                Alert("Starting load from .geojson");

                // Read features from local asset
                FeatureCollection features = reader.ReadFeatureCollection(json);
                Alert("Finished load from .geojson");

                VectorElementVector elements = new VectorElementVector();

                for (int i = 0; i < features.FeatureCount; i++)
                {
                    // This data set features point geometry,
                    // however, it can also be LineGeometry or PolygonGeometry
                    PointGeometry geometry = (PointGeometry)features.GetFeature(i).Geometry;
                    elements.Add(new Marker(geometry, style));
                }

                source.AddAll(elements);
                Alert("Clustering started. Please wait...");

                // Add the clustered vector layer to the map
                MapView.Layers.Add(layer);
            }).Start();
        }
        public override void ViewDidAppear(bool animated)
        {
            base.ViewDidAppear(animated);

            // Add default base layer
            AddOnlineBaseLayer(CartoBaseMapStyle.CartoBasemapStylePositron);

            // Initialize a local vector data source
            LocalVectorDataSource source = new LocalVectorDataSource(BaseProjection);

            // Initialize a vector layer with the previous data source
            var layer = new ClusteredVectorLayer(source, new MyClusterElementBuilder());

            // Default is 100. A good value depends on data
            layer.MinimumClusterDistance = 50;

            // read json from assets and add to map
            string json = System.IO.File.ReadAllText(AssetUtils.CalculateResourcePath("cities15000.geojson"));

            // Create a basic style, as the ClusterElementBuilder will set the real style
            var markerStyleBuilder = new MarkerStyleBuilder();

            markerStyleBuilder.Size = 14;
            MarkerStyle style = markerStyleBuilder.BuildStyle();

            // Read GeoJSON, parse it using SDK GeoJSON parser
            GeoJSONGeometryReader reader = new GeoJSONGeometryReader();

            // Set target projection to base (mercator)
            reader.TargetProjection = BaseProjection;

            // Read features from local asset
            FeatureCollection features = reader.ReadFeatureCollection(json);

            VectorElementVector elements = new VectorElementVector();

            for (int i = 0; i < features.FeatureCount; i++)
            {
                // This data set features point geometry,
                // however, it can also be LineGeometry or PolygonGeometry
                PointGeometry geometry = (PointGeometry)features.GetFeature(i).Geometry;
                elements.Add(new Marker(geometry, style));
            }

            // Add the clustered vector layer to the map
            source.AddAll(elements);

            MapView.Layers.Add(layer);
        }
コード例 #3
0
        public static void addJosnLayer(IMapView mapView, String json)
        {
            var features = Newtonsoft.Json.Linq.JObject.Parse(json)["features"];

            var geoJsonParser = new GeoJSONGeometryReader();

            var proj = new EPSG3857();
            var balloonPopupStyleBuilder = new BalloonPopupStyleBuilder();

            // Create overlay layer for markers
            var dataSource   = new LocalVectorDataSource(proj);
            var overlayLayer = new ClusteredVectorLayer(dataSource, new MyClusterElementBuilder());

            overlayLayer.MinimumClusterDistance = 80;             // in pixels
            mapView.Layers.Add(overlayLayer);

            foreach (var feature in features)
            {
                var featureType = feature ["type"];

                var geometry = feature ["geometry"];
                var ntGeom   = geoJsonParser.ReadGeometry(Newtonsoft.Json.JsonConvert.SerializeObject(geometry));

                var popup = new BalloonPopup(
                    ntGeom,
                    balloonPopupStyleBuilder.BuildStyle(),
                    (string)feature ["properties"]["Capital"], (string)feature ["properties"]["Country"]);

                var properties = (JObject)feature ["properties"];
                foreach (var property in properties)
                {
                    var key   = (string)property.Key;
                    var value = (string)property.Value;
                    popup.SetMetaDataElement(key, value);
                }

                dataSource.Add(popup);
            }
        }
コード例 #4
0
        public static void AddJsonLayer(IMapView mapView, string json)
        {
            var features = new Carto.Geometry.GeoJSONGeometryReader().ReadFeatureCollection(json);

            //var geoJsonParser = new GeoJSONGeometryReader();

            var balloonPopupStyleBuilder = new BalloonPopupStyleBuilder();

            // Create overlay layer for markers
            var dataSource   = new LocalVectorDataSource(proj);
            var overlayLayer = new ClusteredVectorLayer(dataSource, new MyClusterElementBuilder());

            overlayLayer.MinimumClusterDistance = 80;             // in pixels

            mapView.Layers.Add(overlayLayer);

            for (int i = 0; i < features.FeatureCount; i++)
            {
                var geom  = features.GetFeature(i).Geometry;
                var props = features.GetFeature(i).Properties;

                // Create popup
                var popup = new BalloonPopup(
                    geom,
                    balloonPopupStyleBuilder.BuildStyle(),
                    props.GetObjectElement("Capital").String, props.GetObjectElement("Country").String);

                // Copy feature properties to popup metadata
                for (int j = 0; j < props.ObjectKeys.Count; j++)
                {
                    var key = props.ObjectKeys[j];
                    var val = props.GetObjectElement(key);
                    popup.SetMetaDataElement(key, val);
                }

                dataSource.Add(popup);
            }
        }