我正在使用VB和ASP。我有一个ASP图像控件,其中包含一个图像,在这种情况下,它是从Google地图引入的静态地图。我想用VB代码将图像下载到图像(bmp,jpg或任何东西)。该图像位于客户端的asp:Image对象中。只需要使用服务器端的代码下载映像。如果有必要,我可以在客户端使用JS来执行此操作。在那种情况下,我仍然想知道是否有人知道如何做到这一点。
这是我的javascript代码,用于将页面上显示的地图加载到asp:image对象。这部分效果很好。只需将图像保存为文件即可。此功能正在使用的页面上的先前代码中有预定义变量,包括“地图”,“地图选项”,“边界”和“标记”
function Export() {
map = new google.maps.Map(document.getElementById("dvMap"), mapOptions);
//URL of Google Static Maps.
var staticMapUrl = "https://maps.googleapis.com/maps/api/staticmap";
//Set the Google Map Center.
staticMapUrl += "?center=" + mapOptions.center.G + "," + mapOptions.center.K;
//Set the Google Map Size.
staticMapUrl += "&size=220x350";
//Set the Google Map Zoom.
staticMapUrl += "&zoom=" + mapOptions.zoom;
//Set the Google Map Type.
staticMapUrl += "&maptype=" + mapOptions.mapTypeId;
//Loop and add Markers.
for (var i = 0; i < markers.length; i++) {
var data = markers[i];
if (data.pointNumber !== null) {
var labelNumber = data.pointNumber;
var labelString = labelNumber.toString();
var iconName = 'm' + labelString + '.png';
var roundLat = data.latitude; // + .00003;
var roundLon = data.longitude; // + .000005;
var myLatlng = new google.maps.LatLng(roundLat, roundLon);
var image =
{
url: 'ImagesForPoints/' + iconName,
scaledSize: new google.maps.Size(35, 48), // scaled size
//size: new google.maps.Size(53, 73),
//origin: new google.maps.Point(0,0),
//anchor: new google.maps.Point(30, 69)
anchor: new google.maps.Point(19, 45)
};
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
icon: image,
});
bounds.extend(marker.position);
map.fitBounds(bounds);
}
}
//Display the Image of Google Map.
var imgMap = document.getElementById("imgMap");
imgMap.src = staticMapUrl;
imgMap.style.display = "block";
}
答案 0 :(得分:0)
由于您使用了从URL生成图像的Google Maps Static API,因此您的服务器端VB ASP.NET代码只需要用于生成图像的URL,以便能够下载它。
例如,Google Maps Static API中的以下网址将提供以纽约布鲁克林大桥为中心的图片:
https://maps.googleapis.com/maps/api/staticmap?center=Brooklyn+Bridge,New+York,NY&zoom=13&size=600x300&maptype=roadmap
&markers=color:blue%7Clabel:S%7C40.702147,-74.015794&markers=color:green%7Clabel:G%7C40.711614,-74.012318
&markers=color:red%7Clabel:C%7C40.718217,-73.998284
因此,您的服务器端代码需要此URL才能下载完全相同的图像。您可以通过以下方式获取服务器应用程序的URL:
由于您似乎正在使用ASP.NET Web表单,因此第一个选项将是您最简单的选择。您需要做的就是在页面中添加一个asp:HiddenField控件
<asp:HiddenField ID="MapURL" runat="server" ClientIDMode="static" />
然后在JavaScript导出函数中设置字段的值:
var mapUrlField = document.getElementById('<%= MapURL.ClientID %>');
if (mapUrlField)
{
mapUrlField.value = staticMapUrl;
}
然后在回发服务器端,您可以从隐藏字段中检索URL,然后使用WebClient下载图像。
Dim SaveFilePath as String = "c:\folder\mymap.png"
Dim Client as new WebClient
Client.DownloadFile(MapURL.Value, SaveFilePath )
Client.Dispose