2012-06-13 42 views
1

當我設置一個新的地標時,我想用UTM座標系創建一個kml。這是我的代碼,但我不知道我必須設置該屬性設置谷歌地球api上的UTM(通用橫坐墨卡託)座標屬性

//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中的座標?使用它工具 - >選項

+0

注意,GE將顯示這些座標是否已加載任何自己的KML的。此視圖選項與KML無關和/或您是否已加載任何自己的數據。 – jlivni

回答

2

KML規範指定WGS84數據的經度和緯度。不支持任意投影。

您需要將您的座標從您的UTM投影轉換(重投影)到epsg:4326,然後適當地輸入緯度和經度。

0

最好的服務器端的座標變換,我發現在這裏:

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

我已經使用了多年連同我的谷歌地圖和GE插件代碼。

任何人都知道一個JavaScript等效?

0

在前面的帖子說你需要將你的UTM座標轉換到長拉特

此客戶端的一個很好的工具是: http://trac.osgeo.org/proj4js

見例如:
http://trac.osgeo.org/proj4js/wiki/UserGuide

爲也在以前的帖子中說過: 目標座標epsg:4326,這個例子有他們作爲源

proj4的源代碼將是您的utms。

與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;