天天看點

Silverlight 結合ArcGis 使用inforwindow

也許有些人不知道什麼事inforwindow,簡單來說就是資訊窗,小馬這cut了一張google map

圖給大家參考,我們就是要用silverlight 結合ArcGis做出如下功能,請看這邊就出現了我們

要的資訊和圖檔那我們我該如何做到這個呢,ArcGis 提供了一個Toolcontrol,請你跟我這樣做

Silverlight 結合ArcGis 使用inforwindow

畫面上的标點,之前文章有說過,就不多贅述,我們看資訊框這個東西吧! 以下是我的完成畫面

Silverlight 結合ArcGis 使用inforwindow

畫面如下

Silverlight 結合ArcGis 使用inforwindow

程式碼如下

<code>01</code>

<code>'Create by maggiore 2012/5/10 </code><code>for </code><code>dotblog</code>

<code>02</code>

<code>    </code><code>Public Sub New()</code>

<code>03</code>

<code>04</code>

<code>        </code><code>InitializeComponent()</code>

<code>05</code>

<code>06</code>

<code>        </code><code>Dim g_graphic_airport As GraphicsLayer '宣告一個圖層物件變數</code>

<code>07</code>

<code>08</code>

<code>        </code><code>'将畫面上的圖層丢給圖層物件</code>

<code>09</code>

<code>        </code><code>g_graphic_airport = TryCast(MyMap.Layers( </code><code>"graphic_airport" </code><code>), GraphicsLayer)</code>

<code>10</code>

<code>11</code>

<code>        </code><code>Dim pGraphic As Graphic = New Graphic() 'Imports ESRI.ArcGIS.Client</code>

<code>12</code>

<code>13</code>

<code>        </code><code>Dim Point As New MapPoint 'Imports ESRI.ArcGIS.Client.Geometry</code>

<code>14</code>

<code>15</code>

<code>        </code><code>'假設我把點畫在地圖上桃園機場的位置</code>

<code>16</code>

<code>        </code><code>Point.X = 121.23 '經度</code>

<code>17</code>

<code>        </code><code>Point.Y = 25.08 '緯度</code>

<code>18</code>

<code>19</code>

<code>        </code><code>pGraphic.Attributes( </code><code>"infor" </code><code>) = </code><code>"337台灣桃園縣大園鄉航站南路9号"</code>

<code>20</code>

<code>21</code>

<code>        </code><code>pGraphic.Geometry = Point '把經緯度給給Graphic的Geometry屬性</code>

<code>22</code>

<code>        </code><code>pGraphic.Symbol = point_red '把點給Graphic的Symbol屬性</code>

<code>23</code>

<code>        </code><code>g_graphic_airport.Graphics.Add(pGra​​phic) '把Graphic加入圖層中</code>

<code>24</code>

<code>25</code>

<code>26</code>

<code>27</code>

<code>28</code>

<code>        </code><code>'圖層Click 委派開啟inforwindow</code>

<code>29</code>

<code>        </code><code>AddHandler g_graphic_airport.MouseLeftButtonDown, Sub(s As Object, e As GraphicMouseButtonEventArgs)</code>

<code>30</code>

<code>31</code>

<code>                                                              </code><code>MyInfoWindow_ExceptedLine.Anchor = CType(e.Graphic.Geometry, MapPoint)</code>

<code>32</code>

<code>33</code>

<code>                                                              </code><code>MyInfoWindow_ExceptedLine.Content = e.Graphic.Attributes</code>

<code>34</code>

<code>35</code>

<code>                                                              </code><code>MyInfoWindow_ExceptedLine.IsOpen = True</code>

<code>36</code>

<code>37</code>

<code>                                                          </code><code>End Sub</code>

<code>38</code>

<code>39</code>

<code>    </code><code>End Sub</code>

以上的介紹,隻要活用,基本上都已經夠一般開發者使用了,之後來來去去都是哪幾招JS 、AJAX 、WCF。

最後稍微美工一下,小馬把之前的功能綜合一下的成品如下,你可以畫公車路線、飛機路線 

台風路線、野放動物栖息地遷移路線、管線路線(換張底圖) whatever 你想得到都OK

Silverlight 結合ArcGis 使用inforwindow

另外為什麼我沒有寫到Silverlight 用WCF、Entity Data Modal 讀取資料的文章呢! 因為WCF

有個人寫得太清楚了,大家可以過去看看,而ADO.net Entity Data Modal實在是因為我用不

太習慣,最後完成後決定資料鍊結層的部分全改為WCF。

Silverlight WCF :

http://www.dotblogs.com.tw/lolota/archive/2008/12/10/6329.aspx

PS. 以上文章是用VS 2010 + Silverlight 4.0 開發

繼續閱讀