如何使用ArcGis API创建和附加PushPins以进行映射?

时间:2012-03-22 09:41:16

标签: c# windows-phone-7

大家好我想在地图中使用ArcGis API创建PushPin经过长时间的研究,唯一可行的选项似乎是在地图图层的顶部添加图形图层并在其上绘制符号。

但在我尝试以下代码并在WP7模拟器上运行之后。当我点击地图时似乎没有生成PushPin。任何帮助是极大的赞赏。真的很多提前。

*注意代码示例中的map1是指ArcGis Map对象

代码示例:

private void map1_MapGesture(object sender, Map.MapGestureEventArgs e)
{
    SimpleFillSymbol fillSymbol = new SimpleFillSymbol()
    {
        BorderBrush = new SolidColorBrush(Color.FromArgb(0, 255, 0, 0)),
        BorderThickness = 2,
        Fill = new SolidColorBrush(Color.FromArgb(255, 12, 12, 255))
    };

    GraphicsLayer layer = map1.Layers["PushpinLayer"] as GraphicsLayer;
    Graphic g = new Graphic();
    g.Symbol = fillSymbol;
    g.Geometry = e.MapPoint;
    layer.Graphics.Add(g);
}

2 个答案:

答案 0 :(得分:0)

我使用下一个代码在地图上绘制图钉:

<Maps:Map>
    <Maps:MapItemsControl ItemsSource={Binding Pushpins} ItemTemplate={StaticResource CustomTemplate} />
</Maps:Map>

Pushpins是您的对象集合,其中包含公共属性GeoCoordinate Location,以便在特定位置放置图钉。

您可以在手势事件中添加新项目:

Pushpins.Add(new Pushpin(...));

另外,请考虑使用ObservableCollection作为图钉集合类型

答案 1 :(得分:0)

嗨Thx为所有查看我的帖子的人:) 特别是如果回答= P

无论如何,我发现问题出在我的xaml里面,我把图形层放在地图图层之前,因此不会渲染图形。

无论如何,这应该是订购元素= P

的正确方法

非常感谢您的所有帮助:)

<esri:Map Background="White" HorizontalAlignment="Left" Name="map1" VerticalAlignment="Top" WrapAround="True" Height="607" Width="468" MapGesture="map1_MapGesture">
            <esri:Map.Layers>
                <esri:LayerCollection>
                    <esri:ArcGISTiledMapServiceLayer Url="http://www.onemap.sg/ArcGIS/rest/services/BASEMAP/MapServer" />
                    <esri:GraphicsLayer Visible="True" ID="PushpinLayer" />
                </esri:LayerCollection>
            </esri:Map.Layers>
        </esri:Map>