geometryTask.LabelPointsCompleted += delegate(object snd, GraphicsEventArgs le) { graphicsLayer.Graphics.Clear(); for (int i = 0; i < le.Results.Count; ++i) { var graphic = le.Results; var feature = features; if (feature.Geometry != null && feature.Attributes["PROP_ID"] != null && Convert.ToInt32(feature.Attributes["PROP_ID"]) > 0) { var extent = feature.Geometry.Extent; var point1 = MyMap.MapToScreen(new MapPoint(extent.XMin, extent.YMin, extent.ZMin, extent.MMin, extent.SpatialReference)); var point2 = MyMap.MapToScreen(new MapPoint(extent.XMax, extent.YMax, extent.ZMax, extent.MMax, extent.SpatialReference)); if (Point.Subtract(point1, point2).Length > 110) { var symbol = new TextSymbol() { Text = feature.Attributes["PROP_ID"].ToString(), ControlTemplate = LayoutRoot.Resources["LabelTemplate"] as ControlTemplate, FontSize = 12, OffsetX = 50, OffsetY = 6 }; graphic.Symbol = symbol; var mapPoint = graphic.Geometry as MapPoint; graphic.Attributes.Add("X", mapPoint.X); graphic.Attributes.Add("Y", mapPoint.Y); graphicsLayer.Graphics.Add(graphic); } } } };
if ((point2.X - point1.X) > 110)
Exactly. Mike mentioned that there were talks about adding advanced labeling in next versions of the Runtime. Is there an estimated time frame for that by any chance?
I guess, you'd rather to get a labelling engine at client side working label by label but unfortunately, that doesn't exist yet.
Yeah I tried that but then there are different-sized features that should have their labels visible at different resolutions. Any idea about that?
LabelPoints returns the correct points, but then the text's top-left (or bottom-left) corner is placed at that point. I want to center the text. Not sure how to offset it, since the text can change. Any ideas?
<esri:TextSymbol FontSize="14" OffsetX="50" OffsetY="7" Text="{Binding Attributes[myAttribute]}"> <esri:TextSymbol.ControlTemplate> <ControlTemplate> <TextBlock Width="100" FontFamily="{Binding Symbol.FontFamily}" FontSize="{Binding Symbol.FontSize}" Foreground="{Binding Symbol.Foreground}" Text="{Binding Symbol.Text}" TextAlignment="Center" /> </ControlTemplate> </esri:TextSymbol.ControlTemplate> </esri:TextSymbol>
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.