我正在尝试接收特定位置的地图图片。
首先,我将名称翻译成经度和纬度。 这是有效的,可以通过以下代码完成:
string singleLocation = streamReader.ReadLine();
Console.WriteLine(singleLocation);
var requestUri = string.Format("http://maps.googleapis.com/maps/api/geocode/xml?address={0}&sensor=false", Uri.EscapeDataString(singleLocation));
var request = WebRequest.Create(requestUri);
var response = request.GetResponse();
var xdoc = XDocument.Load(response.GetResponseStream());
var result = xdoc.Element("GeocodeResponse").Element("result");
var locationElement = result.Element("geometry").Element("location");
var lat = locationElement.Element("lat");
var lng = locationElement.Element("lng");
var lat2 = lat.Value;
lat2 = lat2.Replace('.', ',');
double latitude;
double.TryParse(lat2, out latitude);
var lng2 = lng.Value;
lng2 = lng2.Replace('.', ',');
double longitude;
double.TryParse(lng2, out longitude);
Console.WriteLine(latitude + " " + longitude);
然后我试图接收特定位置的地图图像。而这部分工作不正常。我不知道如何应对。
var requestUri2 = string.Format(
"https://maps.googleapis.com/maps/api/staticmap?center={0}&zoom={1}&size={2}x{3}&maptype=roadmap",
Uri.EscapeDataString(singleLocation),
Uri.EscapeDataString(5.ToString()),
Uri.EscapeDataString(640.ToString()),
Uri.EscapeDataString(640.ToString()));
var request2 = WebRequest.Create(requestUri2);
var response2 = request2.GetResponse();
var map = response2.GetResponseStream();
应用程序必须完成它不需要漂亮的工作或执行复杂的过程,如果不需要,也不要使用好的包装器。我想将此地图保存为jpg或png等文件。
编辑: 解决方案在这里: How to use httpwebrequest to pull image from website to local file
答案 0 :(得分:2)
我使用此代码。 " mapa" byte []可以保存或显示在您想要的位置。 en latitud and longitudinal你可以使用你的价值观。
byte[] mapa
string url = @"http://maps.googleapis.com/maps/api/staticmap?center=" + latitud +"," + longitud + "&zoom=15&size=504x400&maptype=roadmap&markers=color:red%7Clabel:%7C" + latitud + "," + longitud + "&sensor=false";
using (WebClient wc = new WebClient())
{
mapa = wc.DownloadData(url);
}
之后,您可以查看http://stackoverflow.com/questions/8946846/converting-a-byte-array-to-png-jpg