在Google earth api上设置UTM(Universal Transverse Mercator)坐标属性

时间:2012-06-13 16:04:53

标签: kml google-earth-plugin utm

当我设置新地标时,我想创建一个带有UTM坐标的kml。这是我的代码,但我不知道在哪里设置此属性

//part of the code
counter++;
placemark= makePlacemark(hitTestResult.getLatitude(), hitTestResult.getLongitude(),
          hitTestResult.getAltitude(), ge.ALTITUDE_ABSOLUTE, 'T');
//set placemark name
placemark.setName("PLM" + counter);
//set the placemark on the map
ge.getFeatures().appendChild(placemark);

var output = placemark.getKml();
alert(output);

function makePlacemark(lat, lng, alt, altMode, iconStr) {
        var icon = ge.createIcon('');
        icon.setHref('http://maps.google.com/mapfiles/kml/paddle/' + iconStr + '.png');

        var style = ge.createStyle('');
        style.getIconStyle().setIcon(icon);
        style.getIconStyle().getHotSpot().set(0.5, ge.UNITS_FRACTION, 0,ge.UNITS_FRACTION);

        var pt = ge.createPoint('');
        pt.set(lat, lng, alt, altMode, false, false);
        var pm = ge.createPlacemark('PLM' + counter);
        pm.setGeometry(pt);
        pm.setStyleSelector(style);

        return pm;
}

  

您需要从UTM转换(重新投影)坐标   投射到epsg:4326

这是否意味着Google地球应用程序使用其他转换来显示UTM中的坐标?使用它工具 - >选项

3 个答案:

答案 0 :(得分:2)

KML规范指定WGS84基准面上的纬度和经度。不支持任意预测。

您需要将坐标从UTM投影转换(重投影)到epsg:4326,然后适当地输入纬度和经度。

答案 1 :(得分:0)

我找到的最好的服务器端坐标转换是:

http://www.jstott.me.uk/phpcoord/

我已经将这个用于我的Google地图和GE插件代码多年。

任何人都知道javascript等价物吗?

答案 2 :(得分:0)

如前面的帖子中所述,您需要将UTM坐标转换为长期匹配

这个客户端的一个好工具是: http://trac.osgeo.org/proj4js

见例子:
http://trac.osgeo.org/proj4js/wiki/UserGuide

也在之前的帖子中说过: 目标坐标epsg:4326,示例将它们作为源

proj4的来源将是你的。

使用proj4js,UTM 10区北,http://spatialreference.org/ref/epsg/32610/

var dest= new Proj4js.Proj(‘EPSG:4236’);     
var Source= new Proj4js.Proj(‘EPSG:32610’);     

// transforming utm ngcoordinates
var p = new Proj4js.Point(489399,5456814);   

Proj4js.transform(source, dest, p);     

var lng= p.x ;
var lat= p.y;