如何根据给定的比例[Bing Map]生成地图?

时间:2013-03-04 15:03:12

标签: map geolocation bing-maps bing-api

我最近开始在c#中的webService [wcf]中使用 [ Bing Api ] 。 我想用Bing来恢复给定比例的卫星图像! 例如

比例1:200(地图上的1厘米等于世界上200厘米)

当然我发现这个功能解释了如何计算图像分辨率卫星bing,但这不是我想要的..

Map resolution = 156543.04 meters/pixel * cos(latitude) / (2 ^ zoomlevel)

这是我用于生成我的bing贴图的函数,但我不知道发送什么参数来检索1:200的图像比例。

我需要:

比例= 1:200

我搜索:

int mapSizeHeight =?

int mapSizeWidth =?

int zoomLevel =?

public string GetImageMap(double latitude,double longitude,int mapSizeHeight, int mapSizeWidth, int zoomLevel)
    {
        string key = "ddsaAaasm5vwsdfsfd2ySYBxfEFsdfsdfcFh6iUO5GI4v";
        MapUriRequest mapUriRequest = new MapUriRequest();

        // Set credentials using a valid Bing Maps key
        mapUriRequest.Credentials = new ImageryService.Credentials();
        mapUriRequest.Credentials.ApplicationId = key;

        // Set the location of the requested image
        mapUriRequest.Center = new ImageryService.Location();
        mapUriRequest.Center.Latitude = latitude;
        mapUriRequest.Center.Longitude = longitude;

        // Set the map style and zoom level
        MapUriOptions mapUriOptions = new MapUriOptions();
        mapUriOptions.Style = MapStyle.Aerial;
        mapUriOptions.ZoomLevel = zoomLevel;
        mapUriOptions.PreventIconCollision = true;
        // Set the size of the requested image in pixels
        mapUriOptions.ImageSize = new ImageryService.SizeOfint();
        mapUriOptions.ImageSize.Height = mapSizeHeight;
        mapUriOptions.ImageSize.Width = mapSizeWidth;

        mapUriRequest.Options = mapUriOptions;

        //Make the request and return the URI
        ImageryServiceClient imageryService = new ImageryServiceClient();
        MapUriResponse mapUriResponse = imageryService.GetMapUri(mapUriRequest);
        return mapUriResponse.Uri;
    }

1 个答案:

答案 0 :(得分:2)

如果您还没有,可能需要查看this article on the Bing Maps tile system calculations,您将在其中找到讨论地面分辨率和地图比例的部分。从那篇文章:

map scale = 1 : ground resolution * screen dpi / 0.0254 meters/inch

根据您使用的Bing地图的实施情况,可能无法通过精确的地图比例指定视图。我认为这是因为您无法精确控制缩放级别。例如,在javascript ajax版本中,您只能以整数值指定缩放级别,因此上述等式的ground resolution部分将以谨慎的步骤跳转。在赤道上,使用缩放级别21会缩放1: 282,缩放级别22将为您提供1:141。由于您无法为缩放级别指定小数值,因此无法使用ajax控件获得精确的1:200比例。我对.net Bing Maps控件没有丰富的经验,因此您可能需要调查该API以查看是否可以指定任意缩放级别。

如果您可以精确控制缩放级别并知道dpi值,则可以使用上述链接文章中描述的公式实现1:200比例。