日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用GeocodeService进行地理位置检索

發布時間:2025/5/22 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用GeocodeService进行地理位置检索 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

轉載自 http://beniao.cnblogs.com/作??????者:Beniao???????? WebGIS開發群:75662563

?

?

?

Bing Maps進階系列二:使用GeocodeService進行地理位置檢索

  在《Bing Maps進階系列一:初識Bing Maps地圖服務》里已經對GeocodeService的功能進行了簡單的描述說明,本篇將會詳細的介紹如何使用GeocodeService進行地理位置檢索和反向檢索的實現。

?

一、添加GeocodeService的Web服務引用

  地理編碼服務(GeocodeService)是以WCF技術發布的一個Web服務,地圖編碼服務提供了以一個有效的物理地址在地圖上匹配其對應的地圖地址(既地理經度和緯度坐標)和以地理經度和緯度坐標進行反向匹配物理地址路徑的功能。要使用該服務需添加該服務(http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc)的Web服務引用,如下圖:

        

  

  從上圖可以清晰的看出,該服務提供了兩個方法,一個是根據地名檢索所對應的地理經度和緯度坐標的,另一個方法實現反向檢索地名的功能。通過添加Web服務引用向導IDE工具會為我們自動生成Web服務引用的代理對象等,這些知識點數據Web Service或WCF相關的,這里不詳細介紹。

?

?二、GeocodeService的結構分析

  我們可以通過查看GeocodeService的客戶端代理對象類圖知道,客戶端的調用只支持異步調用方式,如下圖:

        

?

  地點檢索和反向地理坐標檢索都只支持客戶端異步調用,添加Web服務引用后可通過生成的WCF客戶端配置文件查看到客戶端調用WCF的相關配置,這里需要注意一點,自動生成的配置有兩個服務端點的地址配置,需要人為將其中一個"custom"配置刪除,或者在調用GeocodeService提供的方法的時候會出現異常。以下為正確的客戶端配置:

<configuration>
????
<system.serviceModel>
????????
<bindings>
????????????
<basicHttpBinding>
????????????????
<binding?name="BasicHttpBinding_IGeocodeService"?maxBufferSize="2147483647"
????????????????????maxReceivedMessageSize="2147483647">
????????????????????
<security?mode="None">
????????????????????????
<transport>
????????????????????????????
<extendedProtectionPolicy?policyEnforcement="Never"?/>
????????????????????????
</transport>
????????????????????
</security>
????????????????
</binding>
????????????
</basicHttpBinding>
????????
</bindings>
????????
<client>
????????????
<endpoint?address="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc"
????????????????binding="basicHttpBinding"?bindingConfiguration="BasicHttpBinding_IGeocodeService"
????????????????contract="GeocodeService.IGeocodeService"?name="BasicHttpBinding_IGeocodeService"?/>
????????
</client>
????
</system.serviceModel>
</configuration>

?

?

三、調用GeocodeService服務

  首先將界面布局設計下,通過一個TextBox來輸入地點名稱,一個Button來發起服務調用請求并將檢索過后的結果(地名對應的地理位置經度和緯度)顯示在另外兩個TextBox里。界面布局大致如下:

?

代碼 <Grid?x:Name="LayoutRoot"?Width="500"?Height="400">
????
<m:Map?CredentialsProvider="AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU"?x:Name="map"></m:Map>
????
<StackPanel?VerticalAlignment="Top"?HorizontalAlignment="Right"?Background="Gray"?Opacity="0.78"?Orientation="Vertical"?Margin="2,23,2,2">
????????
<StackPanel?Orientation="Horizontal">
????????????
<TextBlock?Text="地名:"?Margin="0,5,0,5"></TextBlock>
????????????
<TextBox?x:Name="tbName"?Width="233"></TextBox>
????????????
<Button?x:Name="btnQuery"?Content="搜索"?Click="btnQuery_Click"?Width="80"?Height="30"></Button>
????????
</StackPanel>
????????
<StackPanel?Orientation="Horizontal">
????????????
<TextBlock?Text="經度:"></TextBlock>
????????????
<TextBox?x:Name="tbLongitude"?Width="110"></TextBox>
????????????
<TextBlock?Text="緯度:"></TextBlock>
????????????
<TextBox?x:Name="tbLatitude"?Width="110"></TextBox>
????????????
<Button?x:Name="btnQueryReverse"?Content="反向搜索"?Click="btnQueryReverse_Click"?Width="60"?Height="30"></Button>
????????
</StackPanel>
????
</StackPanel>
</Grid>

?

        

?

  有了上面的界面結構,接下來看看如何實現的根據地名檢索所對應的地理位置經度和緯度,這就需要調用GeocodeService所提供的Geocode()方法了。

?

代碼 private?void?btnQuery_Click(object?sender,?RoutedEventArgs?e)
{
????
//實例化GeocodeService客戶端對象
????GeocodeServiceClient?client?=?new?GeocodeServiceClient();
????client.GeocodeCompleted?+=?new?EventHandler<GeocodeCompletedEventArgs>(OnGeocodeCompleted);

????
//創建一個Geocode檢索請求
????GeocodeRequest?request?=?new?GeocodeRequest();
????request.Credentials?=?new?Credentials();
????request.Credentials.ApplicationId?=?"AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU";

????
//設置檢索條件
????request.Query?=?this.tbName.Text.Trim();

????
//異步調用Geocode服務方法
????client.GeocodeAsync(request);
}

?

?

  通過指定的GeocodeCompleted的回調函數來完成調用服務請求的響應結果,這里我將請求的結果地理位置獲取到后直接將地圖定位到該位置。

?

private?void?OnGeocodeCompleted(object?sender,?GeocodeCompletedEventArgs?e)
{
????
if?(e.Error?==?null)
????{
????????GeocodeResponse?response?=?e.Result;
????????
double?latitude?=?response.Results[0].Locations[0].Latitude;
????????
double?longitude?=?response.Results[0].Locations[0].Longitude;

????????
//顯示檢索地點的地理位置坐標經度和緯度
????????this.tbLatitude.Text?=?latitude.ToString();
????????
this.tbLongitude.Text?=?longitude.ToString();

????????
//將地圖定位到該地理位置并設置地圖縮放級別到4級
????????map.SetView(new?Location(latitude,?longitude),?4);
????}
}

?

?

          

  

  如上圖輸入“china”進行檢索,通過GeocodeService服務檢索出了china所對應的地理位置的經度和緯度坐標,在程序中將地圖定位到了該坐標的4級地圖,最終效果就如上圖所示。

?

  GeocodeService也提供了反向檢索,既根據地理位置的經度和緯度進行反向檢索地名,服務中的ReverseGeocode()方法便是用來實現這一功能的。

private?void?btnQueryReverse_Click(object?sender,?RoutedEventArgs?e)
{
????GeocodeServiceClient?client?=?new?GeocodeServiceClient();
????client.ReverseGeocodeCompleted+=new?EventHandler<ReverseGeocodeCompletedEventArgs>(OnReverseGeocodeCompleted);

????ReverseGeocodeRequest?request?=?new?ReverseGeocodeRequest();
????request.Credentials?=?new?Credentials();
????request.Credentials.ApplicationId?=?"AkzZURoD0H2Sle6Nq_DE7pm7F3xOc8S3CjDTGNWkz1EFlJJkcwDKT1KcNcmYVINU";
????request.Location?=?new?Location(36.5540000796318,104.055999666452);
????client.ReverseGeocodeAsync(request);
}

private?void?OnReverseGeocodeCompleted(object?sender,?ReverseGeocodeCompletedEventArgs?e)
{
????
if?(e.Error?==?null)
????{
????????
if?(e.Result.Results.Count?>?0)
????????{
????????????GeocodeResponse?response?=?e.Result;
????????????
this.tbName.Text?=?response.Results[0].DisplayName;
????????}
????????
else
????????????MessageBox.Show("沒有檢索到該地理位置所對應的地點");
????}
}

?

  PS:貌似Bing Maps的GeocodeService有問題,難道是MS的數據有問題??通過地名檢索出的地理位置坐標反向檢索回去居然沒有數據返回。?

?

  其實說簡單點GeocodeService所提供的兩個方法就是一個實現根據地名檢索對應的地理位置經度和緯度坐標,一個實現根據地理位置的經度和緯度坐標反向檢索地名。這在外網GIS應用中是非常有用的,企業內網的業務支撐系統這一功能到不是很有用,通常企業業務系統的業務擴展開發中應用到地圖最多的就是地圖的呈現,比如將一些網絡組織圖以GIS的形式呈現出來,讓人看著比較直觀、清晰,其他擴展全的根據業務需求開發。

?

轉載于:https://www.cnblogs.com/hijack/archive/2010/02/08/1665695.html

總結

以上是生活随笔為你收集整理的使用GeocodeService进行地理位置检索的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久黄色小视频 | 久久国产精品国语对白 | 香蕉成人在线视频 | 日韩欧美在线免费 | 亚洲大胆人体 | 国产三级在线播放 | 三女警花合力承欢猎艳都市h | 粉嫩av网站 | 国产成人精品无码片区在线 | 国产精品福利影院 | 久久精品这里只有精品 | 中文字幕精品三级久久久 | 亚洲色图欧美另类 | 欧美福利一区二区三区 | 国产黄色精品视频 | 欧美亚洲视频在线观看 | 97自拍视频 | 欧美无砖砖区免费 | 欧美激情一区 | 貂蝉被到爽流白浆在线观看 | 极品毛片 | 99爱国产| 国产传媒中文字幕 | 国产性生活一级片 | 在线观看中出 | 亚洲一区二区三区人妻 | 手机看片日韩国产 | 在线h片| 激情偷乱人成视频在线观看 | 99国产精品一区二区 | 欧美日韩国产a | 操你妹影院 | 极品美妇后花庭翘臀娇吟小说 | 国产无套精品一区二区 | www.亚洲高清 | 免费看国产黄色片 | 伊人网综合网 | 国产毛茸茸| 97在线视频观看 | 日本肉体xxxⅹ裸体交 | 中文字幕啪啪 | 欧美xxxxbbbb| 国产中文字幕三区 | 亚洲欧美另类视频 | 丝袜人妻一区 | 先锋影音中文字幕 | 日韩欧美成人免费视频 | 国产一区不卡在线 | 天天做天天射 | 国模无码一区二区三区 | 国产精品久久久久久久久岛 | 综合婷婷 | 麻豆成人久久精品一区二区三区 | 青青导航 | 亚洲啪 | 一级片在线播放 | 欧美黄色成人 | 成人三级在线播放 | 天天狠狠干 | 黄色片aa| 香蕉在线播放 | 日韩精品免费一区 | 国产精品suv一区二区 | 国产a级黄色 | 五月天六月色 | 91男女视频| 一级黄色片国产 | 欧美日韩一区二区在线 | 日本中文在线播放 | eeuss鲁片一区二区三区在线观看 | 国产亚洲精品一区二区三区 | mm131丰满少妇人体欣赏图 | av噜噜色 | 中文字幕素人 | 高潮又黄又刺激 | 亚洲欧美大片 | 福利一区三区 | 蜜桃91麻豆精品一二三区 | 久久先锋| 白石茉莉奈黑人 | 亚洲国产视频在线观看 | 超碰免费在线观看 | 中文在线一区 | 超碰2025| 亚洲yy| 国产91久久精品一区二区 | 中国妇女做爰视频 | 亚洲性网 | 国精产品一区一区三区视频 | 成人先锋av| 久久精品国产亚洲av无码娇色 | 香蕉手机网 | 国产做爰全免费的视频软件 | 一二区在线视频 | 国产影视一区 | 午夜影院在线观看18 | 国产精品亚洲专区无码牛牛 | 狠狠躁18三区二区一区传媒剧情 | 日韩av在线中文字幕 |