When we click on a marker graphics, a popup show information about the pop. I want to do the same thing manually. I mean, I ll give lat and lon input and a pop up should show on a button click.
C# using System; using System.Collections.Generic; using System.Runtime.Serialization; using System.ServiceModel.Web; using System.Runtime.Serialization.Json; using System.Linq; using System.Net; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Shapes; using ESRI.ArcGIS.Client; using ESRI.ArcGIS.Client.Geometry; using ESRI.ArcGIS.Client.Symbols; namespace AddPointTest { public partial class MainPage : UserControl { private static ESRI.ArcGIS.Client.Projection.WebMercator mercator = new ESRI.ArcGIS.Client.Projection.WebMercator(); public MainPage() { InitializeComponent(); AddMarkerGraphics(); } void AddMarkerGraphics() { string jsonCoordinateString = "{'Coordinates':[{'X':13,'Y':55.59},{'X':72.83,'Y':18.97}]}"; CustomCoordinateList coordinateList = DeserializeJson<CustomCoordinateList>(jsonCoordinateString); GraphicsLayer graphicsLayer = MyMap.Layers["MyGraphicsLayer"] as GraphicsLayer; for (int i = 0; i < coordinateList.Coordinates.Count; i++) { Graphic graphic = new Graphic() { Geometry = mercator.FromGeographic(new MapPoint(coordinateList.Coordinates.X, coordinateList.Coordinates.Y)), Symbol = i > 0 ? LayoutRoot.Resources["RedMarkerSymbol"] as Symbol : LayoutRoot.Resources["BlackMarkerSymbol"] as Symbol }; graphicsLayer.Graphics.Add(graphic); } } internal static T DeserializeJson<T>(string json) { T objectInstance = Activator.CreateInstance<T>(); System.IO.MemoryStream memoryStream = new System.IO.MemoryStream(System.Text.Encoding.Unicode.GetBytes(json)); System.Runtime.Serialization.Json.DataContractJsonSerializer jsonSerializer = new System.Runtime.Serialization.Json.DataContractJsonSerializer(objectInstance.GetType()); objectInstance = (T)jsonSerializer.ReadObject(memoryStream); memoryStream.Close(); return objectInstance; } } [DataContract] public class CustomCoordinateList { [DataMember] public List<CustomCoordinate> Coordinates = new List<CustomCoordinate>(); } [DataContract] public class CustomCoordinate { public CustomCoordinate() { } public CustomCoordinate(double x, double y) { this.X = x; this.Y = y; } [DataMember] public double X { get; set; } [DataMember] public double Y { get; set; } } }
XAML <UserControl x:Class="AddPointTest.MainPage" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:d="http://schemas.microsoft.com/expression/blend/2008" xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:esri="http://schemas.esri.com/arcgis/client/2009" mc:Ignorable="d" d:DesignHeight="300" d:DesignWidth="400"> <Grid x:Name="LayoutRoot" Background="White"> <Grid.Resources> <esri:SimpleMarkerSymbol x:Key="RedMarkerSymbol" Color="Red" Size="12" Style="Circle" /> <esri:SimpleMarkerSymbol x:Key="BlackMarkerSymbol" Color="Black" Size="14" Style="Diamond" /> </Grid.Resources> <esri:Map x:Name="MyMap" WrapAround="True" Background="White"> <esri:ArcGISTiledMapServiceLayer ID="PhysicalTiledLayer" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer"/> <esri:GraphicsLayer ID="MyGraphicsLayer" /> </esri:Map> </Grid> </UserControl>
Dear thanks for you reply. Actually t looks a bit helpless for me. I just want to perform click event on a marker on the map by giving Latitude and Longitude as input to this event in Java.
Hello Zahid,
Here is the code and it works. I am not sure which programming language you are using but you could convert it.
Thanks,
James