2014-02-19 192 views
0

我试图地址转换为经度和使用地理编码APIC#转换地址,经度和纬度

protected void Button1_Click(object sender, EventArgs e) 
{ 
    IGeocoder geocoder = new GoogleGeocoder() { }; 
    Address[] addresses = geocoder.Geocode("#65/1 bangalore").ToArray(); 
    foreach (Address adrs in addresses) 
    { 
     Response.Write("address:"+adrs); 
    } 
} 

纬度使用此代码我得到的答案是更详细的地址没有经度和纬度。对于这个代码的例子,我得到了

address:Hari Om Trust Tapovana, 1, Bangalore, Karnataka 562123, India 

有人请告诉我什么修改我必须这样做,我可以得到经度和纬度?

为googlegeocoder代码

#region Assembly Geocoding.dll, v3.1.0.0 
    // C:\Users\Admin\Documents\Visual Studio 2012\WebSites\learn1\Bin\Geocoding.dll 
    #endregion 

    using Geocoding; 
    using System; 
    using System.Collections.Generic; 
    using System.Net; 
    using System.Threading; 
    using System.Threading.Tasks; 

    namespace Geocoding.Google 
    { 
     public class GoogleGeocoder : IGeocoder, IAsyncGeocoder 
     { 
      public GoogleGeocoder(); 

      public string ApiKey { get; set; } 
      public Bounds BoundsBias { get; set; } 
      public BusinessKey BusinessKey { get; set; } 
      public string Language { get; set; } 
      public WebProxy Proxy { get; set; } 
      public string RegionBias { get; set; } 
      public string ServiceUrl { get; } 

      public IEnumerable<GoogleAddress> Geocode(string address); 
      public Task<IEnumerable<GoogleAddress>> GeocodeAsync(string address); 
      public Task<IEnumerable<GoogleAddress>> GeocodeAsync(string address, CancellationToken cancellationToken); 
      public IEnumerable<GoogleAddress> ReverseGeocode(Location location); 
      public IEnumerable<GoogleAddress> ReverseGeocode(double latitude, double longitude); 
      public Task<IEnumerable<GoogleAddress>> ReverseGeocodeAsync(double latitude, double longitude); 
      public Task<IEnumerable<GoogleAddress>> ReverseGeocodeAsync(double latitude, double longitude, CancellationToken cancellationToken); 

      protected class RequestState 
      { 
       public readonly CancellationToken? cancellationToken; 
       public readonly HttpWebRequest request; 

       public RequestState(HttpWebRequest request, CancellationToken? cancellationToken); 
      } 
     } 
    } 
+0

请张贴GoogleGeocoder类的代码。 – Christos

+0

“#65/1班加罗尔”,这应该是一个实际的地址? –

+0

我在哪里发布? – user2775241

回答

3

啊......其实很简单:

protected void Button1_Click(object sender, EventArgs e) 
{ 
    IGeocoder geocoder = new GoogleGeocoder() { }; 
    Address[] addresses = geocoder.Geocode("#65/1 bangalore").ToArray(); 
    foreach (Address adrs in addresses) 
    { 
     Response.Write("address:"+adrs.Coordinates); 
    } 
} 

干杯

编辑:你只看到一个街道地址的原因是因为你的循环默认调用Address.ToString()。

0

参考: 谷歌有一个地理编码的API似乎工作得很好大多数,他们有谷歌地图数据的位置。

http://googlemapsapi.blogspot.com/2006/06/geocoding-at-last.html

他们提供在线的地理编码(通过JavaScript):

http://code.google.com/apis/maps/documentation/services.html#Geocoding

或后端地理编码(通过HTTP请求):

http://code.google.com/apis/maps/documentation/services.html#Geocoding_Direct

的数据通常是Google地图本身也使用了相同的功能。 (请注意,有一些例外,如英国或以色列,其中的数据是从不同的来源,并略微降低质量)