1

当我设置一个新的地标时,我想用 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 中的坐标?使用它工具->选项

4

3 回答 3

2

KML 规范在 WGS84 基准上指定纬度和经度。不支持任意投影。

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

于 2012-06-14T05:26:19.497 回答
0

如前文所述,您需要将 UTM 坐标转换为长纬度

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

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

如前一篇文章中所述:目标坐标 epsg:4326 ,该示例将它们作为源

proj4 的来源将是您的 utms。

使用 proj4js 和北区 10 号 UTM, 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;
于 2012-06-21T03:39:52.143 回答
0

我发现的最好的服务器端坐标转换在这里:

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

多年来,我一直将它与我的 Google 地图和 GE 插件代码一起使用。

有人知道等效的javascript吗?

于 2012-06-18T14:16:52.203 回答