public static void AddBalloonPopup1(LocalVectorDataSource source, Projection projection, Bitmap leftImage, Bitmap rightImage) { // TODO REMOVE WHEN ANDROID COMPLETE //Bitmap infoImage = BitmapFactory.decodeResource(getResources(), R.drawable.info); //Bitmap arrowImage = BitmapFactory.decodeResource(getResources(), R.drawable.arrow); //BitmapUtils.createBitmapFromAndroidBitmap(infoImage) //BitmapUtils.createBitmapFromAndroidBitmap(arrowImage); // Add popup BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(6, 6, 6, 6); builder.LeftImage = leftImage; builder.RightImage = rightImage; builder.RightMargins = new BalloonPopupMargins(2, 6, 12, 6); builder.CornerRadius = 20; builder.PlacementPriority = 1; MapPos position = projection.FromWgs84(new MapPos(24.655662, 59.425521)); BalloonPopup popup1 = new BalloonPopup(position, builder.BuildStyle(), "Popup with pos", "Images, round"); popup1.SetMetaDataElement("ClickText", new Variant("Popup nr 1")); source.Add(popup1); }
void AddMarker(string title, string subtitle, float latitude, float longitude) { // Define the location of the marker, it must be converted to base map coordinate system MapPos location = MapView.Options.BaseProjection.FromWgs84(new MapPos(longitude, latitude)); // Load default market style MarkerStyleBuilder markerBuilder = new MarkerStyleBuilder(); // Add the label to the Marker positionMarker = new Marker(location, markerBuilder.BuildStyle()); // Define label what is shown when you click on marker, with default style var balloonBuilder = new BalloonPopupStyleBuilder(); positionLabel = new BalloonPopup(positionMarker, balloonBuilder.BuildStyle(), title, subtitle); // Add the marker and label to the layer markerSource.Add(positionMarker); markerSource.Add(positionLabel); // Center the map in the current location MapView.FocusPos = location; // Zoom in the map in the current location MapView.Zoom = 19f; }
public MyClusterElementBuilder() { balloonPopupStyleBuilder = new BalloonPopupStyleBuilder(); balloonPopupStyleBuilder.CornerRadius = 3; balloonPopupStyleBuilder.TitleMargins = new BalloonPopupMargins(6, 6, 6, 6); balloonPopupStyleBuilder.LeftColor = new Color(240, 230, 140, 255); }
public override bool OnUTFGridClicked(UTFGridClickInfo clickInfo) { if (vectorDataSource == null) { vectorDataSource = (LocalVectorDataSource)vectorLayer.DataSource; } // Clear previous popups vectorDataSource.Clear(); // Multiple vector elements can be clicked at the same time, we only care about the one // Check the type of vector element BalloonPopup clickPopup = null; BalloonPopupStyleBuilder styleBuilder = new BalloonPopupStyleBuilder(); // Configure style styleBuilder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); styleBuilder.TitleMargins = new BalloonPopupMargins(6, 3, 6, 3); // Make sure this label is shown on top all other labels styleBuilder.PlacementPriority = 10; // Show clicked element variant as JSON string string desc = clickInfo.ElementInfo.ToString(); clickPopup = new BalloonPopup(clickInfo.ClickPos, styleBuilder.BuildStyle(), "", desc); vectorDataSource.Add(clickPopup); return(true); }
void AddMarker(string currentPositionTitle, string currentPositionSubtitle, float latitude, float longitude) { // Define the location of the marker, it must be converted to base map coordinate system MapPos currentLocation = mapView.Options.BaseProjection.FromWgs84(new MapPos(longitude, latitude)); // load default market style MarkerStyleBuilder markerStyleBuilder = new MarkerStyleBuilder(); // add the label to the Marker _currentPositionMarker = new Marker(currentLocation, markerStyleBuilder.BuildStyle()); // Define label what is shown when you click on marker, with default style var balloonPopupStyleBuilder = new BalloonPopupStyleBuilder(); _currentPositionMarkerLabel = new BalloonPopup(_currentPositionMarker, balloonPopupStyleBuilder.BuildStyle(), currentPositionTitle, currentPositionSubtitle); // add the marker and label to the layer _markerDataSource.Add(_currentPositionMarker); _markerDataSource.Add(_currentPositionMarkerLabel); //center the map in the current location mapView.FocusPos = currentLocation; //zoom in the map in the current location mapView.Zoom = 19f; }
public override bool OnVectorTileClicked(VectorTileClickInfo clickInfo) { LocalVectorDataSource source = (LocalVectorDataSource)layer.DataSource; source.Clear(); Color color = new Color(0, 100, 200, 150); Feature feature = clickInfo.Feature; Geometry geometry = feature.Geometry; PointStyleBuilder pointBuilder = new PointStyleBuilder(); pointBuilder.Color = color; LineStyleBuilder lineBuilder = new LineStyleBuilder(); lineBuilder.Color = color; PolygonStyleBuilder polygonBuilder = new PolygonStyleBuilder(); polygonBuilder.Color = color; if (geometry is PointGeometry) { source.Add(new Point((PointGeometry)geometry, pointBuilder.BuildStyle())); } else if (geometry is LineGeometry) { source.Add(new Line((LineGeometry)geometry, lineBuilder.BuildStyle())); } else if (geometry is PolygonGeometry) { source.Add(new Polygon((PolygonGeometry)geometry, polygonBuilder.BuildStyle())); } else if (geometry is MultiGeometry) { GeometryCollectionStyleBuilder collectionBuilder = new GeometryCollectionStyleBuilder(); collectionBuilder.PointStyle = pointBuilder.BuildStyle(); collectionBuilder.LineStyle = lineBuilder.BuildStyle(); collectionBuilder.PolygonStyle = polygonBuilder.BuildStyle(); source.Add(new GeometryCollection((MultiGeometry)geometry, collectionBuilder.BuildStyle())); } BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); /// Set a higher placement priority so it would always be visible builder.PlacementPriority = 10; string message = feature.Properties.ToString(); BalloonPopup popup = new BalloonPopup(clickInfo.ClickPos, builder.BuildStyle(), "Click", message); source.Add(popup); return(true); }
public void SetSourcesAndElements(Bitmap olmarker, Bitmap up, Bitmap upleft, Bitmap upright, Color green, Color red, Color white) { // Define layer and datasource for route line and instructions routeDataSource = new LocalVectorDataSource(BaseProjection); VectorLayer routeLayer = new VectorLayer(routeDataSource); MapView.Layers.Add(routeLayer); // Define layer and datasource for route start and stop markers routeStartStopDataSource = new LocalVectorDataSource(BaseProjection); // Initialize a vector layer with the previous data source VectorLayer vectorLayer = new VectorLayer(routeStartStopDataSource); // Add the previous vector layer to the map MapView.Layers.Add(vectorLayer); // Set visible zoom range for the vector layer vectorLayer.VisibleZoomRange = new MapRange(0, 22); // Create markers for start & end and a layer for them MarkerStyleBuilder markerBuilder = new MarkerStyleBuilder(); markerBuilder.Bitmap = olmarker; markerBuilder.HideIfOverlapped = false; markerBuilder.Size = 30; markerBuilder.Color = green; startMarker = new Marker(new MapPos(0, 0), markerBuilder.BuildStyle()); startMarker.Visible = false; markerBuilder.Color = red; stopMarker = new Marker(new MapPos(0, 0), markerBuilder.BuildStyle()); stopMarker.Visible = false; routeStartStopDataSource.Add(startMarker); routeStartStopDataSource.Add(stopMarker); markerBuilder.Color = white; markerBuilder.Bitmap = up; instructionUp = markerBuilder.BuildStyle(); markerBuilder.Bitmap = upleft; instructionLeft = markerBuilder.BuildStyle(); markerBuilder.Bitmap = upright; instructionRight = markerBuilder.BuildStyle(); // Style for instruction balloons balloonBuilder = new BalloonPopupStyleBuilder(); balloonBuilder.TitleMargins = new BalloonPopupMargins(4, 4, 4, 4); }
public override bool OnVectorTileClicked(VectorTileClickInfo clickInfo) { if (Previous != null) { source.Remove(Previous); } var feature = clickInfo.Feature; var properties = feature.Properties; BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); builder.RightMargins = new BalloonPopupMargins(6, 3, 6, 3); builder.PlacementPriority = 10; builder.CornerRadius = 5; builder.TitleFontSize = 14; builder.TitleColor = new Color(20, 20, 20, 255); builder.DescriptionFontSize = 9; builder.DescriptionColor = new Color(100, 100, 100, 255); builder.LeftMargins = new BalloonPopupMargins(6, 6, 6, 6); builder.LeftImage = LeftImage; builder.RightMargins = new BalloonPopupMargins(2, 6, 12, 6); var animationBuilder = new AnimationStyleBuilder(); animationBuilder.RelativeSpeed = 2.0f; animationBuilder.SizeAnimationType = AnimationType.AnimationTypeSpring; builder.AnimationStyle = animationBuilder.BuildStyle(); BalloonPopupStyle style = builder.BuildStyle(); string title = properties.GetObjectElement("title").String; string description = properties.GetObjectElement("description").String; MapPos position = clickInfo.Feature.Geometry.CenterPos; BalloonPopup popup = new BalloonPopup(position, style, title, description);; source.Add(popup); Previous = popup; string url = properties.GetObjectElement("attachment_url").String; Click?.Invoke(url, EventArgs.Empty); return(true); }
public override void OnMapClicked(MapClickInfo mapClickInfo) { // Remove old click label if (oldClickLabel != null) { vectorDataSource.Remove(oldClickLabel); oldClickLabel = null; } BalloonPopupStyleBuilder styleBuilder = new BalloonPopupStyleBuilder(); // Make sure this label is shown on top all other labels styleBuilder.PlacementPriority = 10; // Check the type of the click string clickMsg = null; if (mapClickInfo.ClickType == ClickType.ClickTypeSingle) { clickMsg = "Single map click!"; } else if (mapClickInfo.ClickType == ClickType.ClickTypeLong) { clickMsg = "Long map click!"; } else if (mapClickInfo.ClickType == ClickType.ClickTypeDouble) { clickMsg = "Double map click!"; } else if (mapClickInfo.ClickType == ClickType.ClickTypeDual) { clickMsg = "Dual map click!"; } MapPos clickPos = mapClickInfo.ClickPos; // Show click coordinates also MapPos wgs84Clickpos = mapView.Options.BaseProjection.ToWgs84(clickPos); //string message = string.Format("%.4f, %.4f", wgs84Clickpos.Y, wgs84Clickpos.X); string message = Math.Round(wgs84Clickpos.Y, 4) + ", " + Math.Round(wgs84Clickpos.X, 4); BalloonPopupStyle style = styleBuilder.BuildStyle(); BalloonPopup popup = new BalloonPopup(mapClickInfo.ClickPos, style, clickMsg, message); vectorDataSource.Add(popup); oldClickLabel = popup; }
public static void AddBalloonPopup3(LocalVectorDataSource source, Projection projection) { // Add popup BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.DescriptionWrap = false; builder.PlacementPriority = 1; MapPos position = projection.FromWgs84(new MapPos(24.658662, 59.432521)); String title = "This title will be wrapped if there's not enough space on the screen."; String description = "Description is set to be truncated with three dots, unless the screen is really really big."; BalloonPopup popup = new BalloonPopup(position, builder.BuildStyle(), title, description); popup.SetMetaDataElement("ClickText", new Variant("Popup nr 3")); source.Add(popup); }
public override bool OnVectorElementClicked(VectorElementClickInfo clickInfo) { if (previous != null) { source.Remove(previous); } VectorElement element = clickInfo.VectorElement; BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); builder.RightMargins = new BalloonPopupMargins(6, 3, 6, 3); builder.PlacementPriority = 10; BalloonPopupStyle style = builder.BuildStyle(); string title = element.GetMetaDataElement("ClickText").String; string description = ""; for (int i = 0; i < element.MetaData.Count; i++) { string key = element.MetaData.Keys.ToList()[i]; description += key + " = " + element.GetMetaDataElement(key) + "; "; } BalloonPopup popup; if (element is BalloonPopup) { Billboard billboard = (Billboard)element; popup = new BalloonPopup(billboard, style, title, description); } else { MapPos position = clickInfo.ClickPos; popup = new BalloonPopup(position, style, title, description); } source.Add(popup); previous = popup; return(true); }
public override bool OnVectorElementClicked(VectorElementClickInfo clickInfo) { if (previous != null) { source.Remove(previous); } VectorElement element = clickInfo.VectorElement; BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); builder.RightMargins = new BalloonPopupMargins(6, 3, 6, 3); builder.PlacementPriority = 10; BalloonPopupStyle style = builder.BuildStyle(); string title = element.GetMetaDataElement("ClickText").String; string description = ""; for (int i = 0; i < element.MetaData.Count; i++) { string key = element.MetaData.Keys.ToList()[i]; description += key + " = " + element.GetMetaDataElement(key) + "; "; } BalloonPopup popup; if (element is BalloonPopup) { Billboard billboard = (Billboard)element; popup = new BalloonPopup(billboard, style, title, description); } else { MapPos position = clickInfo.ClickPos; popup = new BalloonPopup(position, style, title, description); } source.Add(popup); previous = popup; return true; }
public static void AddBalloonPopup2(LocalVectorDataSource source, Projection projection, Bitmap leftImage, Bitmap rightImage, Bitmap markerImage) { // Add popup, but instead of giving it a position attach it to a marker BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.Color = new Color(0, 0, 0, 255); builder.CornerRadius = 0; builder.LeftMargins = new BalloonPopupMargins(6, 6, 6, 6); builder.LeftImage = leftImage; builder.RightImage = rightImage; builder.RightMargins = new BalloonPopupMargins(2, 6, 12, 6); builder.TitleColor = new Color(255, 255, 255, 255); builder.TitleFontName = "HelveticaNeue-Medium"; builder.TitleFontSize = 11; builder.DescriptionColor = new Color(255, 255, 255, 255); builder.DescriptionFontName = "HelveticaNeue-Medium"; builder.DescriptionFontSize = 11; builder.StrokeColor = new Color(255, 0, 120, 255); builder.StrokeWidth = 0; builder.PlacementPriority = 1; Marker marker = GetMarker(projection, new MapPos(24.646469, 59.426939), markerImage); source.Add(marker); Marker marker2 = GetMarker(projection, new MapPos(24.666469, 59.422939), markerImage); source.Add(marker2); BalloonPopup popup = new BalloonPopup(marker, builder.BuildStyle(), "Popup attached to marker", "Black, rectangle."); popup.SetMetaDataElement("ClickText", new Variant("Popup nr 2")); source.Add(popup); }
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); } }
void OnLocationUpdate(object sender, LocationUpdatedEventArgs e) { double latitude = e.Location.Coordinate.Latitude; double longitude = e.Location.Coordinate.Longitude; string title = "Your current location"; string description = latitude.To4Decimals() + ", " + longitude.To4Decimals(); MapPos location = MapView.Options.BaseProjection.FromWgs84(new MapPos(longitude, latitude)); if (IsMarkerSet) { markerLabel.Description = description; positionMarker.Geometry = new PointGeometry(location); return; } // Load default market style MarkerStyleBuilder markerStyleBuilder = new MarkerStyleBuilder(); // Add the label to the Marker positionMarker = new Marker(location, markerStyleBuilder.BuildStyle()); // Define label what is shown when you click on marker, with default style var builder = new BalloonPopupStyleBuilder(); markerLabel = new BalloonPopup(positionMarker, builder.BuildStyle(), title, description); // Add the marker and label to the layer markerSource.Add(positionMarker); markerSource.Add(markerLabel); // Center the map in the current location MapView.FocusPos = location; // Zoom in the map in the current location MapView.Zoom = 19f; }
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); } }
protected override void OnCreate(Bundle savedInstanceState) { base.OnCreate(savedInstanceState); AddBaseLayer(CartoBaseMapStyle.CartoBasemapStyleDefault); // Create PackageManager instance for dealing with offline packages var packageFolder = new File(GetExternalFilesDir(null), "routingpackages"); if (!(packageFolder.Mkdirs() || packageFolder.IsDirectory)) { Log.Fatal("Could not create package folder!"); } packageManager = new CartoPackageManager(ManagerSource, packageFolder.AbsolutePath); PackageListener = new RoutingPackageListener(packageManager, downloadablePackages); packageManager.PackageManagerListener = PackageListener; packageManager.Start(); // Fetch list of available packages from server. // Note that this is asynchronous operation // and listener will be notified via onPackageListUpdated when this succeeds. packageManager.StartPackageListDownload(); // create offline routing service connected to package manager offlineRoutingService = new PackageManagerRoutingService(packageManager); // Create additional online routing service that will be used // when offline package is not yet downloaded or offline routing fails onlineRoutingService = new CartoOnlineRoutingService(ServiceSource); // Define layer and datasource for route line and instructions routeDataSource = new LocalVectorDataSource(BaseProjection); VectorLayer routeLayer = new VectorLayer(routeDataSource); MapView.Layers.Add(routeLayer); // Define layer and datasource for route start and stop markers routeStartStopDataSource = new LocalVectorDataSource(BaseProjection); // Initialize a vector layer with the previous data source VectorLayer vectorLayer = new VectorLayer(routeStartStopDataSource); // Add the previous vector layer to the map MapView.Layers.Add(vectorLayer); // Set visible zoom range for the vector layer vectorLayer.VisibleZoomRange = new MapRange(0, 22); // Set route listener MapListener = new RouteMapEventListener(); MapView.MapEventListener = MapListener; // Create markers for start & end and a layer for them MarkerStyleBuilder markerBuilder = new MarkerStyleBuilder(); markerBuilder.Bitmap = CreateBitmap(Resource.Drawable.olmarker); markerBuilder.HideIfOverlapped = false; markerBuilder.Size = 30; markerBuilder.Color = new Carto.Graphics.Color(Android.Graphics.Color.Green); startMarker = new Marker(new MapPos(0, 0), markerBuilder.BuildStyle()); startMarker.Visible = false; markerBuilder.Color = new Carto.Graphics.Color(Android.Graphics.Color.Red); stopMarker = new Marker(new MapPos(0, 0), markerBuilder.BuildStyle()); stopMarker.Visible = false; routeStartStopDataSource.Add(startMarker); routeStartStopDataSource.Add(stopMarker); markerBuilder.Color = new Carto.Graphics.Color(Android.Graphics.Color.White); markerBuilder.Bitmap = CreateBitmap(Resource.Drawable.direction_up); instructionUp = markerBuilder.BuildStyle(); markerBuilder.Bitmap = CreateBitmap(Resource.Drawable.direction_upthenleft); instructionLeft = markerBuilder.BuildStyle(); markerBuilder.Bitmap = CreateBitmap(Resource.Drawable.direction_upthenright); instructionRight = markerBuilder.BuildStyle(); // Style for instruction balloons balloonBuilder = new BalloonPopupStyleBuilder(); balloonBuilder.TitleMargins = new BalloonPopupMargins(4, 4, 4, 4); // Finally animate map to Estonia MapView.FocusPos = BaseProjection.FromWgs84(new MapPos(25.662893, 58.919365)); MapView.Zoom = 7; Alert("Long-press on map to set route start and finish"); }
async public static void AddMapOverlays(IMapView mapView) { // Create overlay layer for markers var dataSource = new LocalVectorDataSource(proj); var overlayLayer = new VectorLayer(dataSource); mapView.Layers.Add(overlayLayer); // Create line style, and line poses var lineStyleBuilder = new LineStyleBuilder(); lineStyleBuilder.Width = 8; var linePoses = new MapPosVector(); // proj.FromWgs84 returns (spherical) Mercator projection linePoses.Add(proj.FromWgs84(new MapPos(0, 0))); linePoses.Add(proj.FromWgs84(new MapPos(0, 80))); linePoses.Add(proj.FromWgs84(new MapPos(45, 45))); var line = new Line(linePoses, lineStyleBuilder.BuildStyle()); dataSource.Add(line); // Create balloon popup var balloonPopupStyleBuilder = new BalloonPopupStyleBuilder(); balloonPopupStyleBuilder.CornerRadius = 3; balloonPopupStyleBuilder.TitleFontName = "Helvetica"; balloonPopupStyleBuilder.TitleFontSize = 55; balloonPopupStyleBuilder.TitleColor = new Color(200, 0, 0, 255); balloonPopupStyleBuilder.StrokeColor = new Color(200, 120, 0, 255); balloonPopupStyleBuilder.StrokeWidth = 1; balloonPopupStyleBuilder.PlacementPriority = 1; var popup = new BalloonPopup( proj.FromWgs84(new MapPos(0, 20)), balloonPopupStyleBuilder.BuildStyle(), "Title", "Description"); dataSource.Add(popup); // Load NML file model from a file BinaryData modelFile = AssetUtils.LoadAsset("fcd_auto.nml"); // set location for model, and create NMLModel object with this var modelPos = proj.FromWgs84(new MapPos(24.646469, 59.423939)); var model = new NMLModel(modelPos, modelFile); mapView.FocusPos = modelPos; mapView.Zoom = 15; // Oversize it 20*, just to make it more visible (optional) model.Scale = 20; // Add metadata for click handling (optional) model.SetMetaDataElement("ClickText", new Variant("Single model")); // Add it to normal datasource dataSource.Add(model); // Create and set map listener mapView.MapEventListener = new MapListener(dataSource); await AnimateModel(model); }
public static void ShowResult(this LocalVectorDataSource source, MapView map, GeocodingResult result, string title, string description, bool goToPosition) { source.Clear(); var builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); builder.TitleMargins = new BalloonPopupMargins(6, 3, 6, 3); builder.CornerRadius = 5; // Make sure this label is shown on top of all other labels builder.PlacementPriority = 10; FeatureCollection collection = result.FeatureCollection; int count = collection.FeatureCount; MapPos position = new MapPos(); Geometry geometry; for (int i = 0; i < count; i++) { geometry = collection.GetFeature(i).Geometry; var color = new Carto.Graphics.Color(0, 100, 200, 150); var pointBuilder = new PointStyleBuilder(); pointBuilder.Color = color; var lineBuilder = new LineStyleBuilder(); lineBuilder.Color = color; var polygonBuilder = new PolygonStyleBuilder(); polygonBuilder.Color = color; VectorElement element = null; if (geometry is PointGeometry) { element = new Point(geometry as PointGeometry, pointBuilder.BuildStyle()); } else if (geometry is LineGeometry) { element = new Line(geometry as LineGeometry, lineBuilder.BuildStyle()); } else if (geometry is PolygonGeometry) { element = new Polygon(geometry as PolygonGeometry, polygonBuilder.BuildStyle()); } else if (geometry is MultiGeometry) { var collectionBuilder = new GeometryCollectionStyleBuilder(); collectionBuilder.PointStyle = pointBuilder.BuildStyle(); collectionBuilder.LineStyle = lineBuilder.BuildStyle(); collectionBuilder.PolygonStyle = polygonBuilder.BuildStyle(); element = new GeometryCollection(geometry as MultiGeometry, collectionBuilder.BuildStyle()); } if (element != null) { position = geometry.CenterPos; source.Add(element); } } if (goToPosition) { map.SetFocusPos(position, 1.0f); map.SetZoom(16, 1.0f); } var popup = new BalloonPopup(position, builder.BuildStyle(), title, description); source.Add(popup); }
public override bool OnVectorTileClicked(Carto.Ui.VectorTileClickInfo clickInfo) { source.Clear(); Color color = new Color(0, 100, 200, 150); Feature feature = clickInfo.Feature; Geometry geometry = feature.Geometry; PointStyleBuilder pointBuilder = new PointStyleBuilder(); pointBuilder.Color = color; LineStyleBuilder lineBuilder = new LineStyleBuilder(); lineBuilder.Color = color; PolygonStyleBuilder polygonBuilder = new PolygonStyleBuilder(); polygonBuilder.Color = color; if (geometry is PointGeometry) { source.Add(new Point((PointGeometry)geometry, pointBuilder.BuildStyle())); } else if (geometry is LineGeometry) { source.Add(new Line((LineGeometry)geometry, lineBuilder.BuildStyle())); } else if (geometry is PolygonGeometry) { source.Add(new Polygon((PolygonGeometry)geometry, polygonBuilder.BuildStyle())); } else if (geometry is MultiGeometry) { GeometryCollectionStyleBuilder collectionBuilder = new GeometryCollectionStyleBuilder(); collectionBuilder.PointStyle = pointBuilder.BuildStyle(); collectionBuilder.LineStyle = lineBuilder.BuildStyle(); collectionBuilder.PolygonStyle = polygonBuilder.BuildStyle(); source.Add(new GeometryCollection((MultiGeometry)geometry, collectionBuilder.BuildStyle())); } BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); // Set a higher placement priority so it would always be visible builder.PlacementPriority = 10; string id = clickInfo.FeatureId.ToString(); string name = "Info (id: " + id + ")"; if (feature.Properties.GetObjectElement("name").String != "null") { name += " about " + feature.Properties.GetObjectElement("name").String; } string description = feature.Properties.ToString(); BalloonPopup popup = new BalloonPopup(clickInfo.ClickPos, builder.BuildStyle(), name, description); source.Add(popup); return(true); }
public static void AddBalloonPopup3(LocalVectorDataSource source, Projection projection) { // Add popup BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.DescriptionWrap = false; builder.PlacementPriority = 1; builder.TitleFontSize = 14; builder.DescriptionFontSize = 12; MapPos position = projection.FromWgs84(new MapPos(24.658662, 59.432521)); String title = "This title will be wrapped if there's not enough space on the screen."; String description = "Description is set to be truncated with three dots, unless the screen is really really big."; BalloonPopup popup = new BalloonPopup(position, builder.BuildStyle(), title, description); popup.SetMetaDataElement("ClickText", new Variant("Popup nr 3")); source.Add(popup); }
public override bool OnVectorElementClicked(VectorElementClickInfo clickInfo) { if (previous != null) { source.Remove(previous); } VectorElement element = clickInfo.VectorElement; BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); builder.RightMargins = new BalloonPopupMargins(6, 3, 6, 3); builder.PlacementPriority = 10; builder.CornerRadius = 5; builder.TitleFontSize = 12; builder.DescriptionFontSize = 10; var navy = new Color(22, 41, 69, 255); builder.TitleColor = navy; builder.DescriptionColor = navy; var animationBuilder = new AnimationStyleBuilder(); animationBuilder.RelativeSpeed = 2.0f; animationBuilder.SizeAnimationType = AnimationType.AnimationTypeSpring; builder.AnimationStyle = animationBuilder.BuildStyle(); BalloonPopupStyle style = builder.BuildStyle(); string title = element.GetMetaDataElement("ClickText").String; string description = ""; if (!element.GetMetaDataElement(RouteSearchTitle).String.Equals(NullString)) { // Route search has a special click text title = element.GetMetaDataElement(RouteSearchTitle).String; description = element.GetMetaDataElement(RouteSearchDescription).String; } else { for (int i = 0; i < element.MetaData.Count; i++) { string key = element.MetaData.Keys.ToList()[i]; description += key + " = " + element.GetMetaDataElement(key) + "; "; } } BalloonPopup popup; if (element is BalloonPopup) { Billboard billboard = (Billboard)element; popup = new BalloonPopup(billboard, style, title, description); } else { MapPos position = clickInfo.ClickPos; popup = new BalloonPopup(position, style, title, description); } source.Add(popup); previous = popup; return(true); }
protected override void OnCreate(Android.OS.Bundle savedInstanceState) { base.OnCreate(savedInstanceState); /// Set online base layer var baseLayer = new NutiteqOnlineVectorTileLayer("nutibright-v2a.zip"); mapView.Layers.Add(baseLayer); // create PackageManager instance for dealing with offline packages var packageFolder = new File(GetExternalFilesDir(null), "routingpackages"); if (!(packageFolder.Mkdirs() || packageFolder.IsDirectory)) { Log.Fatal("Could not create package folder!"); } packageManager = new NutiteqPackageManager(ROUTING_PACKAGEMANAGER_SOURCE, packageFolder.AbsolutePath); packageManager.PackageManagerListener = new RoutingPackageListener(this); packageManager.Start(); // fetch list of available packages from server. Note that this is asynchronous operation and listener will be notified via onPackageListUpdated when this succeeds. packageManager.StartPackageListDownload(); // create offline routing service connected to package manager offlineRoutingService = new PackageManagerRoutingService(packageManager); // create additional online routing service that will be used when offline package is not yet downloaded or offline routing fails onlineRoutingService = new NutiteqOnlineRoutingService(ROUTING_SERVICE_SOURCE); // define layer and datasource for route line and instructions routeDataSource = new LocalVectorDataSource(baseProjection); VectorLayer routeLayer = new VectorLayer(routeDataSource); mapView.Layers.Add(routeLayer); // define layer and datasource for route start and stop markers routeStartStopDataSource = new LocalVectorDataSource(baseProjection); // Initialize a vector layer with the previous data source VectorLayer vectorLayer = new VectorLayer(routeStartStopDataSource); // Add the previous vector layer to the map mapView.Layers.Add(vectorLayer); // Set visible zoom range for the vector layer vectorLayer.VisibleZoomRange = new MapRange(0, 22); // set route listener RouteMapEventListener mapListener = new RouteMapEventListener(this); mapView.MapEventListener = mapListener; // create markers for start & end, and a layer for them MarkerStyleBuilder markerStyleBuilder = new MarkerStyleBuilder(); markerStyleBuilder.Bitmap = BitmapUtils .CreateBitmapFromAndroidBitmap(BitmapFactory.DecodeResource( Resources, Resource.Drawable.olmarker)); markerStyleBuilder.HideIfOverlapped = false; markerStyleBuilder.Size = 30; markerStyleBuilder.Color = new Nutiteq.Graphics.Color(Android.Graphics.Color.Green); startMarker = new Marker(new MapPos(0, 0), markerStyleBuilder.BuildStyle()); startMarker.Visible = false; markerStyleBuilder.Color = new Nutiteq.Graphics.Color(Android.Graphics.Color.Red); stopMarker = new Marker(new MapPos(0, 0), markerStyleBuilder.BuildStyle()); stopMarker.Visible = false; routeStartStopDataSource.Add(startMarker); routeStartStopDataSource.Add(stopMarker); markerStyleBuilder.Color = new Nutiteq.Graphics.Color(Android.Graphics.Color.White); markerStyleBuilder.Bitmap = BitmapUtils .CreateBitmapFromAndroidBitmap(BitmapFactory.DecodeResource( Resources, Resource.Drawable.direction_up)); instructionUp = markerStyleBuilder.BuildStyle(); markerStyleBuilder.Bitmap = BitmapUtils .CreateBitmapFromAndroidBitmap(BitmapFactory.DecodeResource( Resources, Resource.Drawable.direction_upthenleft)); instructionLeft = markerStyleBuilder.BuildStyle(); markerStyleBuilder.Bitmap = BitmapUtils .CreateBitmapFromAndroidBitmap(BitmapFactory.DecodeResource( Resources, Resource.Drawable.direction_upthenright)); instructionRight = markerStyleBuilder.BuildStyle(); // style for instruction balloons balloonPopupStyleBuilder = new BalloonPopupStyleBuilder(); balloonPopupStyleBuilder.TitleMargins = new BalloonPopupMargins(4, 4, 4, 4); // finally animate map to Estonia mapView.FocusPos = baseProjection.FromWgs84(new MapPos(25.662893, 58.919365)); mapView.Zoom = 7; Toast.MakeText(ApplicationContext, "Long-press on map to set route start and finish", ToastLength.Long).Show(); }
public override void ViewDidLoad() { base.ViewDidLoad(); AddBaseLayer(CartoBaseMapStyle.CartoBasemapStyleDefault); // Create PackageManager instance for dealing with offline packages string folder = Utils.GetDocumentDirectory("routingpackages"); if (!Directory.Exists(folder)) { Directory.CreateDirectory(folder); Console.WriteLine("Directory: Does not exist... Creating"); } else { Console.WriteLine("Directory: Exists"); } packageManager = new CartoPackageManager(ROUTING_PACKAGEMANAGER_SOURCE, folder); PackageListener = new RoutingPackageListener(packageManager, downloadablePackages); packageManager.PackageManagerListener = PackageListener; // Fetch list of available packages from server. // Note that this is asynchronous operation // and listener will be notified via onPackageListUpdated when this succeeds. packageManager.StartPackageListDownload(); // Create offline routing service connected to package manager offlineRoutingService = new PackageManagerRoutingService(packageManager); // Create additional online routing service that will be used // when offline package is not yet downloaded or offline routing fails onlineRoutingService = new CartoOnlineRoutingService(ROUTING_SERVICE_SOURCE); // Define layer and datasource for route line and instructions routeDataSource = new LocalVectorDataSource(BaseProjection); VectorLayer routeLayer = new VectorLayer(routeDataSource); MapView.Layers.Add(routeLayer); // Define layer and datasource for route start and stop markers routeStartStopDataSource = new LocalVectorDataSource(BaseProjection); // Initialize a vector layer with the previous data source VectorLayer vectorLayer = new VectorLayer(routeStartStopDataSource); // Add the previous vector layer to the map MapView.Layers.Add(vectorLayer); // Set visible zoom range for the vector layer vectorLayer.VisibleZoomRange = new MapRange(0, 22); MapListener = new RouteMapEventListener(); MapView.MapEventListener = MapListener; // Create markers for start & end, and a layer for them MarkerStyleBuilder markerStyleBuilder = new MarkerStyleBuilder(); markerStyleBuilder.Bitmap = BitmapUtils.CreateBitmapFromUIImage(UIImage.FromFile("icons/olmarker.png")); markerStyleBuilder.HideIfOverlapped = false; markerStyleBuilder.Size = 30; markerStyleBuilder.Color = new Carto.Graphics.Color(0, 255, 0, 255); startMarker = new Marker(new MapPos(0, 0), markerStyleBuilder.BuildStyle()); startMarker.Visible = false; markerStyleBuilder.Color = new Carto.Graphics.Color(255, 0, 0, 255); stopMarker = new Marker(new MapPos(0, 0), markerStyleBuilder.BuildStyle()); stopMarker.Visible = false; routeStartStopDataSource.Add(startMarker); routeStartStopDataSource.Add(stopMarker); markerStyleBuilder.Color = new Carto.Graphics.Color(255, 255, 255, 255); markerStyleBuilder.Bitmap = BitmapUtils.CreateBitmapFromUIImage(UIImage.FromFile("icons/direction_up.png")); instructionUp = markerStyleBuilder.BuildStyle(); markerStyleBuilder.Bitmap = BitmapUtils.CreateBitmapFromUIImage(UIImage.FromFile("icons/direction_upthenleft.png")); instructionLeft = markerStyleBuilder.BuildStyle(); markerStyleBuilder.Bitmap = BitmapUtils.CreateBitmapFromUIImage(UIImage.FromFile("icons/direction_upthenright.png")); instructionRight = markerStyleBuilder.BuildStyle(); // Style for instruction balloons balloonPopupStyleBuilder = new BalloonPopupStyleBuilder(); balloonPopupStyleBuilder.TitleMargins = new BalloonPopupMargins(4, 4, 4, 4); // Finally animate map to Estonia MapView.FocusPos = BaseProjection.FromWgs84(new MapPos(25.662893, 58.919365)); MapView.Zoom = 7; Alert("Long-press on map to set route start and finish"); }
public override bool OnUTFGridClicked(UTFGridClickInfo clickInfo) { if (vectorDataSource == null) { vectorDataSource = (LocalVectorDataSource)vectorLayer.DataSource; } // Clear previous popups vectorDataSource.Clear(); // Multiple vector elements can be clicked at the same time, we only care about the one // Check the type of vector element BalloonPopup clickPopup = null; BalloonPopupStyleBuilder styleBuilder = new BalloonPopupStyleBuilder(); // Configure style styleBuilder.LeftMargins = new BalloonPopupMargins(0, 0, 0, 0); styleBuilder.TitleMargins = new BalloonPopupMargins(6, 3, 6, 3); // Make sure this label is shown on top all other labels styleBuilder.PlacementPriority = 10; // Show clicked element variant as JSON string string desc = clickInfo.ElementInfo.ToString(); clickPopup = new BalloonPopup(clickInfo.ClickPos, styleBuilder.BuildStyle(), "Clicked", desc); vectorDataSource.Add(clickPopup); return true; }
public static void AddBalloonPopup1(LocalVectorDataSource source, Projection projection, Bitmap leftImage, Bitmap rightImage) { // TODO REMOVE WHEN ANDROID COMPLETE //Bitmap infoImage = BitmapFactory.decodeResource(getResources(), R.drawable.info); //Bitmap arrowImage = BitmapFactory.decodeResource(getResources(), R.drawable.arrow); //BitmapUtils.createBitmapFromAndroidBitmap(infoImage) //BitmapUtils.createBitmapFromAndroidBitmap(arrowImage); // Add popup BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); builder.LeftMargins = new BalloonPopupMargins(6, 6, 6, 6); builder.LeftImage = leftImage; builder.RightImage = rightImage; builder.RightMargins = new BalloonPopupMargins(2, 6, 12, 6); builder.CornerRadius = 20; builder.PlacementPriority = 1; builder.TitleFontSize = 10; builder.DescriptionFontSize = 10; MapPos position = projection.FromWgs84(new MapPos(24.655662, 59.425521)); BalloonPopup popup1 = new BalloonPopup(position, builder.BuildStyle(), "Popup with pos", "Images, round"); popup1.SetMetaDataElement("ClickText", new Variant("Popup nr 1")); source.Add(popup1); }
public override bool OnVectorTileClicked(VectorTileClickInfo clickInfo) { LocalVectorDataSource source = (LocalVectorDataSource)layer.DataSource; source.Clear(); Color color = new Color(0, 100, 200, 150); Feature feature = clickInfo.Feature; Geometry geometry = feature.Geometry; PointStyleBuilder pointBuilder = new PointStyleBuilder(); pointBuilder.Color = color; LineStyleBuilder lineBuilder = new LineStyleBuilder(); lineBuilder.Color = color; PolygonStyleBuilder polygonBuilder = new PolygonStyleBuilder(); polygonBuilder.Color = color; if (geometry is PointGeometry) { source.Add(new Point((PointGeometry)geometry, pointBuilder.BuildStyle())); } else if (geometry is LineGeometry) { source.Add(new Line((LineGeometry)geometry, lineBuilder.BuildStyle())); } else if (geometry is PolygonGeometry) { source.Add(new Polygon((PolygonGeometry)geometry, polygonBuilder.BuildStyle())); } else if (geometry is MultiGeometry) { GeometryCollectionStyleBuilder collectionBuilder = new GeometryCollectionStyleBuilder(); collectionBuilder.PointStyle = pointBuilder.BuildStyle(); collectionBuilder.LineStyle = lineBuilder.BuildStyle(); collectionBuilder.PolygonStyle = polygonBuilder.BuildStyle(); source.Add(new GeometryCollection((MultiGeometry)geometry, collectionBuilder.BuildStyle())); } BalloonPopupStyleBuilder builder = new BalloonPopupStyleBuilder(); // Set a higher placement priority so it would always be visible builder.PlacementPriority = 10; string id = clickInfo.FeatureId.ToString(); string message = "(Id: " + id + ") "; string name = feature.Properties.GetObjectElement("name").String; string description = feature.Properties.GetObjectElement("description").String.ToMax200Characters(); if (name.Equals("null")) { string facility = feature.Properties.GetObjectElement("facility").String; if (!facility.Equals("null")) { message += facility; } else { message += feature.Properties.ToString(); } } else { message += name; if (!description.Equals("null")) { message += "\n" + description; } } BalloonPopup popup = new BalloonPopup(clickInfo.ClickPos, builder.BuildStyle(), "", message); source.Add(popup); if (IsForce) { Console.WriteLine("Force touch"); return(false); } Console.WriteLine("Non-force"); return(true); }