vs2005下地图的实现
想实现这样的功能,在vs下的窗体内显示百度或谷歌地图,给定经纬度,能在地图上标记。或者能打开浏览器,在浏览器中显示地图并标记所给位置。
哪位高手能教一下具体的步骤或者给个小例子,感激不尽
[最优解释]
我写过一个下载google地图的程序,可以提供源代码。里边你可以看到所有最基本的概念。
使用什么webgis api,你可能就被它限制住了。例如对于自己应用而言,你可能需要自己有一个服务器自己提供企业业务管理、专题地图、遥感卫星等应用方面基本的GIS服务(而不需要花几十万块钱去买那些根本不能直接提供你的最终功能的所谓GIS产品)。这时候你就需要自己完全(100%)拥有的一个地图服务的c/s软件。
[其他解释]
去找他们的API吧,桌面比较难动起来,网页比较简单,js代码即可。
[其他解释]
去google地图API或百度,里面都有代码的
[其他解释]
需要请下载,周一删掉!
[其他解释]
简单说,google栅格地图在第0级是一个256x256的png图片,然后没扩到一级则扩大一倍,也就是说第1级是四个256x256的图片,第2级是16个,第三级是64个......经纬度跟投影变换后的x、y坐标的转换关系是
public static Point ToPixels(this LatLng cord, int nZoom)
{
var x = (cord.Longitude + 180) * (256L << nZoom) / 360;
double siny = Math.Sin(cord.Latitude * Math.PI / 180);
double y = Math.Log((1 + siny) / (1 - siny));
y = (128 << nZoom) * (1 - y / (2 * Math.PI));
return new Point((int)x, (int)y);
}
public static LatLng ToLatLng(this Point pixel, int nZoom)
{
var x = pixel.X * 360 / (256L << nZoom) - 180;
double y = 2 * Math.PI * (1 - pixel.Y / (128 << nZoom));
double z = Math.Pow(Math.E, y);
double siny = (z - 1) / (z + 1);
y = Math.Asin(siny) * 180 / Math.PI;
return new LatLng { Longitude = x, Latitude = y };
}