如何从街道名称,地名或城市名称获取GPS坐标

时间:2012-06-01 04:30:01

标签: windows-phone-7

可以从街道名称,地名或城市名称获取GPS坐标吗?我的问题是我知道我目前的Lat / Lon GPS,但我不知道我想去的街道名称的GPS Lat / Lon。我如何使用Bing Map服务?非常感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

添加: - http://dev.virtualearth.net/webservices/v1/geocodeservice/geocodeservice.svc

    public void Obtainresult()
    {
        try
        {
            if (location == null)
                return;

            ReverseGeocodeRequest reverseGeocodeRequest = new ReverseGeocodeRequest();

            // Set the credentials using a valid Bing Maps key
            reverseGeocodeRequest.Credentials = new GeocodeService.Credentials();
            reverseGeocodeRequest.Credentials.ApplicationId = "Your Bing Map Key"


            // Set the point to use to find a matching address
            GeocodeService.Location point1 = new GeocodeService.Location();
            point1.Latitude = location.Latitude;
            point1.Longitude = location.Longitude;

            reverseGeocodeRequest.Location = point1;

            // Make the reverse geocode request
            GeocodeServiceClient geocodeService = new GeocodeServiceClient("BasicHttpBinding_IGeocodeService");
            geocodeService.ReverseGeocodeCompleted += new EventHandler<ReverseGeocodeCompletedEventArgs>(geocodeService_ReverseGeocodeCompleted);
            geocodeService.ReverseGeocodeAsync(reverseGeocodeRequest);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }


    void geocodeService_ReverseGeocodeCompleted(object sender, ReverseGeocodeCompletedEventArgs e)
    {
        try
        {
            // The result is a GeocodeResponse object
            GeocodeResponse geocodeResponse = e.Result;

            if (geocodeResponse.Results != null)
            {
                var yourresult  = geocodeResponse.Results;
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message);
        }
    }

如果您有问题,请告诉我:)

欢呼:)

答案 1 :(得分:0)

这里有一个使用Yahoo API的示例:http://www.devfish.net/fullblogitemview.aspx?blogid=826

可能看起来像你可以使用的东西。

答案 2 :(得分:0)

using System;
using System.Collections.Generic;
using System.Text;
using System.Web;
using System.Net;
using System.Web.UI; 


namespace GoogleGeocoder
{
    public interface ISpatialCoordinate
    {
        decimal Latitude {get; set; } 
        decimal Longitude {get; set; } 
    }

    /// <summary>
    /// Coordiate structure. Holds Latitude and Longitude.
    /// </summary>
    public struct Coordinate : ISpatialCoordinate
    {
        private decimal _latitude; 
        private decimal _longitude;

        public Coordinate(decimal latitude, decimal longitude)
        {
            _latitude = latitude;
            _longitude = longitude; 
        }

        #region ISpatialCoordinate Members

        public decimal  Latitude
        {
            get 
            { 
                return _latitude; 
            }
            set 
            { 
                this._latitude = value; 
            }
        }

        public decimal  Longitude
        {
            get 
            { 
                return _longitude; 
            }
            set 
            { 
                this._longitude = value;
            }
        }

        #endregion
    }

    public class Geocode
    {
        private const string _googleUri = "http://maps.google.com/maps/geo?q=";
        private const string _googleKey = "yourkey"; // Get your key from:  http://www.google.com/apis/maps/signup.html
        private const string _outputType = "csv"; // Available options: csv, xml, kml, json

        private static Uri GetGeocodeUri(string address)
        {
            address = HttpUtility.UrlEncode(address);
            return new Uri(String.Format("{0}{1}&output={2}&key={3}", _googleUri, address, _outputType, _googleKey));
        }

        /// <summary>
        /// Gets a Coordinate from a address.
        /// </summary>
        /// <param name="address">An address.
        ///     <remarks>
        ///         <example>1600 Amphitheatre Parkway Mountain View, CA  94043</example>
        ///     </remarks>
        /// </param>
        /// <returns>A spatial coordinate that contains the latitude and longitude of the address.</returns>
        public static Coordinate GetCoordinates(string address)
        {
            WebClient client = new WebClient();
            Uri uri = GetGeocodeUri(address);


            /*  The first number is the status code, 
             * the second is the accuracy, 
             * the third is the latitude, 
             * the fourth one is the longitude.
             */
            string[] geocodeInfo = client.DownloadString(uri).Split(',');

            return new Coordinate(Convert.ToDecimal(geocodeInfo[2]), Convert.ToDecimal(geocodeInfo[3]));
        }

    }
}