c#:将地址转换为经度和纬度 [英] c#:converting address to longitude and latitude

查看:152
本文介绍了c#:将地址转换为经度和纬度的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用此代码使用地理编码api将地址转换为经度和纬度。

  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);
}
}

我得到的答案是更详细的地址,而不是经纬度。例如,对于这段代码,我得到了

 地址:Hari Om Trust Tapovana,1,班加罗尔,卡纳塔克邦562123,印度

有人请告诉我我需要做些什么修改才能获得经度和纬度? p>

googlegeocoder的代码是

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

使用地理编码;
使用System;
使用System.Collections.Generic;
使用System.Net;
使用System.Threading;
使用System.Threading.Tasks;

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

公共字符串ApiKey {get;组; }
public Bounds BoundsBias {get;组; }
public BusinessKey BusinessKey {get;组; }
public string Language {get;组; }
public WebProxy Proxy {get;组; }
公共字符串RegionBias {get;组; }
public string ServiceUrl {get; }

public IEnumerable< GoogleAddress>地理编码(字符串地址);
public Task< IEnumerable< GoogleAddress>> GeocodeAsync(字符串地址);
public Task< IEnumerable< GoogleAddress>> GeocodeAsync(字符串地址,CancellationToken cancellationToken);
public IEnumerable< GoogleAddress> ReverseGeocode(位置位置);
public IEnumerable< GoogleAddress> ReverseGeocode(双纬度,双倍经度);
public Task< IEnumerable< GoogleAddress>> ReverseGeocodeAsync(双纬度,双倍经度);
public Task< IEnumerable< GoogleAddress>> ReverseGeocodeAsync(双纬度,双倍经度,CancellationToken cancellationToken);

受保护的类RequestState
{
public readonly CancellationToken?的CancellationToken;
public readonly HttpWebRequest请求;

public RequestState(HttpWebRequest请求,CancellationToken?cancellationToken);




解决方案

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




$ b $干杯

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


i was trying to convert address into longitude and latitude using this code using geocoding api

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);
    }
}

the answer i got was the more detailed address not the longitude and latitude .for example for this code i got

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

someone please tell me what modification i have to do so that i could get longitude and latitude?

the code for googlegeocoder is

 #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);
            }
        }
    }

解决方案

Ahh... quite simple in Fact:

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);
    }
}

Cheers

EDIT: The reason you're only seeing a street address is because of Address.ToString() being called by default in your loop.

这篇关于c#:将地址转换为经度和纬度的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆