Как добавить маркер на карту ArcGIS (Silverlight)

Я обучаю себя картам ArcGIS через Silverlight API для работы, и я пытался сделать простой пример, поместив символ маркера в XY, но черт возьми, если я не могу заставить его работать! Я использую следующий образец страницы в качестве эталона, но когда я иду отлаживать вещь, мой маркер всегда оказывается в мертвой точке карты, независимо от того, какие значения X и Y MapPoint:

http://blogs.esri.com/dev/blogs/silverlightwpf/archive/2010/12/14/добавление-GPS-местоположения-на-карту-в-arcgis-api-for-windows-phone.aspx

мой xaml выглядит следующим образом:

<UserControl x:Class="CustomGeometry.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="clr-namespace:ESRI.ArcGIS.Client;assembly=ESRI.ArcGIS.Client"
    mc:Ignorable="d"
    d:DesignHeight="300" d:DesignWidth="400">

    <Grid x:Name="LayoutRoot" Background="White">
        <esri:Map x:Name="mapWells" Loaded="mapWells_Loaded">
            <esri:ArcGISTiledMapServiceLayer x:Name="BaseLayer" ID="Base Map" Url="http://services.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer" />
        </esri:Map>
    </Grid>
</UserControl>

мой внутренний код выглядит следующим образом:

  public partial class MainPage : UserControl
    {

        public MainPage()
        {
            InitializeComponent();
        }
        /// <summary>
        /// creating Wells Layer
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void mapWells_Loaded(object sender, RoutedEventArgs e)
        {
            GraphicsLayer wellsLayer = mapWells.Layers["WellsLayer"] as GraphicsLayer;
            if (wellsLayer == null)
            {
                wellsLayer = new GraphicsLayer()
                {
                    ID = "wellsLayer"
                };
                mapWells.Layers.Add(wellsLayer);

                Graphic marker = new Graphic();
                marker.Symbol = new SimpleMarkerSymbol();
                wellsLayer.Graphics.Add(marker);
            }
            // map point not being set correctly.
            MapPoint location = new MapPoint(-122.466903686523, 48.7440490722656, mapWells.SpatialReference);
            wellsLayer.Graphics[0].Geometry = location;

        }
    }

Что я делаю неправильно? Я предполагаю, что это связано с пространственной ссылкой, но пространственная привязка карты равна нулю. Помощь!


person Nathan Tregillus    schedule 09.05.2011    source источник
comment
Это веб-служба MapPoint или карты Silveright Bing? Веб-служба MapPoint прекращается в этом году, поэтому я подозреваю, что последнее?   -  person winwaed    schedule 10.05.2011


Ответы (1)


Нашел проблему. Хотя в пошаговом примере указано, что GeographicToWebMercator является необязательным, это явно не так. Когда я заменил строку

wellsLayer.Graphics[0].Geometry = location;

с участием

wellsLayer.Graphics[0].Geometry = ESRI.ArcGIS.Client.Bing.Transform.GeographicToWebMercator(location);

маркер карты перемещается в местоположение, основанное на моей точке карты, потому что, хотя широта и долгота могут быть правильными для данной системы отсчета Spacial, система карт bing должна преобразовать эти значения во что-то, что она знает, как отображать в текущей проекции.

Надеюсь, это поможет другим!

person Nathan Tregillus    schedule 09.05.2011