通过地址错误获取谷歌地图图像C#

时间:2016-05-18 20:46:42

标签: c# google-maps

我正在尝试接收特定位置的地图图片。

首先,我将名称翻译成经度和纬度。 这是有效的,可以通过以下代码完成:

                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

1 个答案:

答案 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