X Y转换为lat lng

时间:2010-02-14 16:37:01

标签: c# google-maps maps proj4js

我通过x,y和shape在数据库中放置位置 如何将此位置点转换为纬度和经度对? 有工具还是公式?

例如x = 220162.636213404 y = 762057.914609313应该是这样的     lat = 34.55667500000000000 lng = 31.68173300000000000

谢谢!

3 个答案:

答案 0 :(得分:2)

有许多不同的地理坐标系。最常用的是WGS84(EPSG:4326)。谷歌地图使用它自己的球形墨卡托投影,通常称为谷歌墨卡托,但它的latlong值是WGS84坐标。

为了转换坐标,您必须知道源坐标系和目标坐标系。一旦你想到这一点,你可以使用像Proj4js这样的库来计算转换。

Proj4js还提供在线坐标计算器,可帮助您确定数据库中坐标使用的坐标系。

如果您正在寻找C#框架:SharpMap非常适合处理地理空间应用程序的所有方面。

答案 1 :(得分:1)

这取决于您选择使用的projection model

答案 2 :(得分:0)

Asumming x,y是像素测量位置,您可以调整此片段:

> public Class MyMapView extends MapView {

.... /**
* x,y are screen coordinates. The location l is set to the
latitude and longitude that corresponds to this
* point on the screen.
*/
public void setLocation(double x, double y, Location l) {
double latSpan = (getLatitudeSpan() / 1.0E6);
double lngSpan = (getLongitudeSpan() / 1.0E6);
Point center = getMapCenter();
double xPcnt = x / ((double)getWidth());
double yPcnt = y / ((double)getHeight());
double lat0 = (center.getLatitudeE6()/1.0E6 + (latSpan/2.0));
double lng0 = (center.getLongitudeE6()/1.0E6 - (lngSpan/2.0));
double lat = lat0 - (yPcnt * latSpan);
double lng = lng0 + (xPcnt * lngSpan);
l.setLatitude(lat);
l.setLongitude(lng);
} ...

取自: http://groups.google.com/group/android-developers/msg/f40fa714555c9617