您的位置:首页 > 其它

BingMapsSilverlight访问其他地图

2011-02-20 21:33 295 查看
1.Google地图

public class GoogleTile : TileSource
{
// Fields
private const string charPhysical = "t";
private const string charPhysicalHybrid = "p";
private const string charSatellite = "s";
private const string charSatelliteHybrid = "y";
private const string charStreet = "m";
private const string charStreetOverlay = "h";
private const string charStreetWaterOverlay = "r";
private GoogleMapModes MapMode = GoogleMapModes.SatelliteHybrid;
private int server_rr = 0;
private const string TilePathBase = "http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}";

// Methods
public override Uri GetUri(int tilePositionX, int tilePositionY, int tileLevel)
{
int zoom = tileLevel;
string uriString = string.Empty;
this.server_rr = (this.server_rr + 1) % 4;
switch (this.MapMode)
{
case GoogleMapModes.Street:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "m", zoom, tilePositionX, tilePositionY);
break;

case GoogleMapModes.Satellite:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "s", zoom, tilePositionX, tilePositionY);
break;

case GoogleMapModes.SatelliteHybrid:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "y", zoom, tilePositionX, tilePositionY);
break;

case GoogleMapModes.Physical:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "t", zoom, tilePositionX, tilePositionY);
break;

case GoogleMapModes.PhysicalHybrid:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "p", zoom, tilePositionX, tilePositionY);
break;

case GoogleMapModes.StreetOverlay:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "h", zoom, tilePositionX, tilePositionY);
break;

case GoogleMapModes.StreetWaterOverlay:
uriString = XYZUrl("http://mt{0}.google.com/vt/lyrs={1}&z={2}&x={3}&y={4}", this.server_rr, "r", zoom, tilePositionX, tilePositionY);
break;
}
return new Uri(uriString);
}

private static string XYZUrl(string url, int server, string mapmode, int zoom, int tilePositionX, int tilePositionY)
{
url = string.Format(url, new object[] { server, mapmode, zoom, tilePositionX, tilePositionY });
return url;
}
}

[code]public enum GoogleMapModes { Street, Satellite, SatelliteHybrid, Physical, PhysicalHybrid, StreetOverlay, StreetWaterOverlay }
[/code]
2.OpenStreetMap

public class OpenStreetMapTileSource : TileSource
{
// Methods
public OpenStreetMapTileSource() : base("http://tile.openstreetmap.org/{2}/{0}/{1}.png")
{
}

public override Uri GetUri(int x, int y, int zoomLevel)
{
return new Uri(string.Format(base.UriFormat, x, y, zoomLevel));
}
}

[/code]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐