上一篇:Bing Maps进阶系列一:初识Bing Maps地图服务

在《Bing Maps进阶系列一:初识Bing Maps地图服务》里已经对GeocodeService的功能进行了简单的描述说明,本篇将会详细的介绍如何使用GeocodeService进行地理位置检索和反向检索的实现。

一、添加GeocodeService的Web服务引用

  地理编码服务(GeocodeService)是以WCF技术发布的一个Web服务,地图编码服务提供了以一个有效的物理地址在地图上匹配其对应的地图地址(既地理经度和纬度坐标)和以地理经度和纬度坐标进行反向匹配物理地址路径的功能。要使用该服务需添加该服务(http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc)的Web服务引用,如下图:

附件: GeocodeService.jpg         

  从上图可以清晰的看出,该服务提供了两个方法,一个是根据地名检索所对应的地理经度和纬度坐标的,另一个方法实现反向检索地名的功能。通过添加 Web服务引用向导IDE工具会为我们自动生成Web服务引用的代理对象等,这些知识点数据Web Service或WCF相关的,这里不详细介绍。

二、GeocodeService的结构分析

  我们可以通过查看GeocodeService的客户端代理对象类图知道,客户端的调用只支持异步调用方式,如下图:

附件: GeocodeService0.jpg         

  地点检索和反向地理坐标检索都只支持客户端异步调用,添加Web服务引用后可通过生成的WCF客户端配置文件查看到客户端调用WCF的相关配置,这里需要注意一点,自动生成的配置有两个服务端点的地址配置,需要人为将其中一个"custom"配置删除,或者在调用GeocodeService 提供的方法的时候会出现异常。以下为正确的客户端配置:
  1. <configuration>
  2.     <system.serviceModel>
  3.         <bindings>
  4.             <basicHttpBinding>
  5.                 <binding name="BasicHttpBinding_IGeocodeService" maxBufferSize="2147483647"
  6.                     maxReceivedMessageSize="2147483647">
  7.                     <security mode="None">
  8.                         <transport>
  9.                             <extendedProtectionPolicy policyEnforcement="Never" />
  10.                         </transport>
  11.                     </security>
  12.                 </binding>
  13.             </basicHttpBinding>
  14.         </bindings>
  15.         <client>
  16.             <endpoint address="http://dev.virtualearth.net/webservices/v1/geocodeservice/GeocodeService.svc"
  17.                 binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IGeocodeService"
  18.                 contract="GeocodeService.IGeocodeService" name="BasicHttpBinding_IGeocodeService" />
  19.         </client>
  20.     </system.serviceModel>
  21. </configuration>
复制代码
TOP