可以从街道名称,地名或城市名称获取GPS坐标吗?我的问题是我知道我目前的Lat / Lon GPS,但我不知道我想去的街道名称的GPS Lat / Lon。我如何使用Bing Map服务?非常感谢您的帮助。
答案 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]));
}
}
}