Click or drag to resize

CalloutDefinition Class

Defines the content of a Callout when used to display on a GeoView using the ShowCallout* methods.
Inheritance Hierarchy
SystemObject
  Esri.ArcGISRuntime.UICalloutDefinition

Namespace:  Esri.ArcGISRuntime.UI
Assembly:  Esri.ArcGISRuntime (in Esri.ArcGISRuntime.dll) Version: 100.6.0.0
Syntax
C#
public class CalloutDefinition

The CalloutDefinition type exposes the following members.

Constructors
  NameDescription
Public methodCode exampleCalloutDefinition(String)
Initializes a new instance of the CalloutDefinition class.
Public methodCalloutDefinition(GeoElement)
Initializes a new instance of the CalloutDefinition class from a GeoElement
Public methodCode exampleCalloutDefinition(String, String)
Initializes a new instance of the CalloutDefinition class.
Top
Properties
  NameDescription
Public propertyButtonImage
Gets or sets the an image to be provided for an optional the button
Public propertyDetailText
Gets or sets an optional description for the callout
Public propertyIcon
Gets or sets the an optional icon for a callout
Public propertyLeaderOffsetX
Gets or sets the horizontal offset relative to the location of the Callout
Public propertyLeaderOffsetY
Gets or sets the vertical offset relative to the location of the Callout
Public propertyMaxWidth
Gets or sets the the maximum width of the callout contents.
Public propertyOnButtonClick
Gets or sets the action executed when clicking the button.
Public propertyTag
Gets or sets the the tag will be parsed to the OnButtonClick action
Public propertyText
Gets or sets the header title for the callout
Top
Methods
  NameDescription
Public methodSetIconFromSymbolAsync
Generates the Icon from a Symbol
Top
Examples

Android

Example Name: ShowCallout

Show a callout with the latitude and longitude of user-tapped points.

Code example screen shot.

C#
// Copyright 2017 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Android.App;
using Android.OS;
using Android.Widget;
using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.UI;
using Esri.ArcGISRuntime.UI.Controls;

namespace ArcGISRuntime.Samples.ShowCallout
{
    [Activity (ConfigurationChanges=Android.Content.PM.ConfigChanges.Orientation | Android.Content.PM.ConfigChanges.ScreenSize)]
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        "Show callout",
        "MapView",
        "This sample illustrates how to show callouts on a map in response to user interaction.",
        "Tap on the map to show that point's coordinates.")]
    public class ShowCallout : Activity
    {
        // Create and hold reference to the used MapView
        private MapView _myMapView = new MapView();

        protected override void OnCreate(Bundle bundle)
        {
            base.OnCreate(bundle);

            CreateLayout();

            Initialize();

            Title = "Show callout";
        }

        private void Initialize()
        {


            // Create a new basemap using the streets base layer
            Basemap myBasemap = Basemap.CreateStreets();

            // Create a new map based on the streets basemap
            Map myMap = new Map(myBasemap);

            // Assign the map to the MapView
            _myMapView.Map = myMap;

            // Wire up the MapView GeoVewTapped event
            _myMapView.GeoViewTapped += _myMapView_GeoViewTapped;


        }

        private void CreateLayout()
        {
            LinearLayout layout = new LinearLayout(this)
            {
                Orientation = Orientation.Vertical
            };

            // Create and add a help label
            TextView helpLabel = new TextView(this)
            {
                Text = "Tap to show a callout."
            };
            layout.AddView(helpLabel);

            // Add the MapView to the page
            layout.AddView(_myMapView);

            // Apply the layout to the app
            SetContentView(layout);
        }

        private void _myMapView_GeoViewTapped(object sender, GeoViewInputEventArgs e)
        {
            // Get the user-tapped location
            MapPoint mapLocation = e.Location;

            // Project the user-tapped map point location to a geometry
            Geometry myGeometry = GeometryEngine.Project(mapLocation, SpatialReferences.Wgs84);

            // Convert to geometry to a traditional Lat/Long map point
            MapPoint projectedLocation = (MapPoint)myGeometry;

            // Format the display callout string based upon the projected map point (example: "Lat: 100.123, Long: 100.234")
            string mapLocationDescription = $"Lat: {projectedLocation.Y:F3} Long:{projectedLocation.X:F3}";

            // Create a new callout definition using the formatted string
            CalloutDefinition myCalloutDefinition = new CalloutDefinition("Location:", mapLocationDescription);

            // Display the callout
            _myMapView.ShowCalloutAt(mapLocation, myCalloutDefinition);
        }
    }
}
Examples

Xamarin Forms Android

Example Name: ShowCallout

Show a callout with the latitude and longitude of user-tapped points.

Code example screen shot.

C#
// Copyright 2017 Esri.
// 
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License.
// You may obtain a copy of the License at: http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
// "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific
// language governing permissions and limitations under the License.

using Esri.ArcGISRuntime.Geometry;
using Esri.ArcGISRuntime.Mapping;
using Esri.ArcGISRuntime.UI;
using Xamarin.Forms;
using Esri.ArcGISRuntime.Xamarin.Forms;

namespace ArcGISRuntime.Samples.ShowCallout
{
    [ArcGISRuntime.Samples.Shared.Attributes.Sample(
        "Show callout",
        "MapView",
        "This sample illustrates how to show callouts on a map in response to user interaction.",
        "Tap on the map to show that point's coordinates.")]
    public partial class ShowCallout : ContentPage
    {
        public ShowCallout()
        {
            InitializeComponent();

            Initialize();
        }

        private void Initialize()
        {
            // Create a new basemap using the streets base layer
            Basemap myBasemap = Basemap.CreateStreets();

            // Create a new map based on the streets basemap
            Map myMap = new Map(myBasemap);

            // Assign the map to the MapView
            MyMapView.Map = myMap;

            // Wire up the MapView GeoVewTapped event
            MyMapView.GeoViewTapped += MyMapView_GeoViewTapped;
        }

        private void MyMapView_GeoViewTapped(object sender, GeoViewInputEventArgs e)
        {
            // Get the user-tapped location
            MapPoint mapLocation = e.Location;

            // Project the user-tapped map point location to a geometry
            Geometry myGeometry = GeometryEngine.Project(mapLocation, SpatialReferences.Wgs84);

            // Convert to geometry to a traditional Lat/Long map point
            MapPoint projectedLocation = (MapPoint)myGeometry;

            // Format the display callout string based upon the projected map point (example: "Lat: 100.123, Long: 100.234")
            string mapLocationDescription = $"Lat: {projectedLocation.Y:F3} Long:{projectedLocation.X:F3}";

            // Create a new callout definition using the formatted string
            CalloutDefinition myCalloutDefinition = new CalloutDefinition("Location:", mapLocationDescription);

            // Display the callout
            MyMapView.ShowCalloutAt(mapLocation, myCalloutDefinition);
        }
    }
}
XAML
<?xml version="1.0" encoding="utf-8"?>

<ContentPage xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
             xmlns:esriUI="clr-namespace:Esri.ArcGISRuntime.Xamarin.Forms;assembly=Esri.ArcGISRuntime.Xamarin.Forms"
             x:Class="ArcGISRuntime.Samples.ShowCallout.ShowCallout">
    <StackLayout Orientation="Vertical">
        <Label Text="Tap to show a callout."
               VerticalOptions="Start"/>
        <esriUI:MapView x:Name="MyMapView"
                        VerticalOptions="FillAndExpand"/>
    </StackLayout>
</ContentPage>
See Also
Additional Examples
Hyperlink to ExampleDescription
FindAddressFind the location for an address.
FindPlaceFind places of interest near a location or within a specific area.
MobileMapSearchAndRouteDisplay maps and use locators to enable search and routing offline using a Mobile Map Package.
OfflineGeocodeGeocode addresses to locations and reverse geocode locations to addresses offline.
ProjectProject a point from one spatial reference to another.
ReverseGeocodeUse an online service to find the address for a tapped point.
SelectEncFeaturesSelect features in an ENC layer.
ShowCalloutShow a callout with the latitude and longitude of user-tapped points.