2015-01-14 33 views
0

我在嘗試使用OneMap地圖覆蓋層縮放到esri基本地圖上的某個點時遇到了一些問題。這裏是我通過傳遞郵政編碼得到座標x和y的函數:錯誤:在傳遞變量時<image>屬性的值無效

function zoomPostal(postalCode) { 
$.getJSON("http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr" + 
     "&searchVal=" + postalCode + "&otptFlds=SEARCHVAL,CATEGORY" + 
     "&returnGeom=0&rset=1", function (data) { 

    var x = data.SearchResults[1].X; 
    console.log(x); 
    var y = data.SearchResults[1].Y; 
    console.log(y); 
    var loc = new esri.geometry.Point({ 
     "x": x, 
     "y": y, 
     "spatialReference":'PROJCS["SVY21",GEOGCS["SVY21[WGS84]",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",28001.642],PARAMETER["False_Northing",38744.572],PARAMETER["Central_Meridian",103.8333333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",1.366666666666667],UNIT["Meter",1.0]]' });   

    map.centerAndZoom(loc, 5); 
     }); 

}

當我打印出來的X和Y,我得到23948.7465和47505.7986所以這意味着它是不是NaN或null。然而,與這些代碼,我收到錯誤消息,因爲這樣:

Error: Invalid value for <image> attribute x="NaN" 
Error: Invalid value for <image> attribute y="NaN" 

奇怪的是,如果我硬編碼的座標x和y爲「X」和‘Y’在祿變量,它沒有放大和提前完美工作我不知道爲什麼會這樣表現

任何想法感謝

編輯

這是錯誤消息是顯示部分:。?。

function zoomPostal(postalCode) { 
$.getJSON("http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr" + 
     "&searchVal=" + postalCode + "&otptFlds=SEARCHVAL,CATEGORY" + 
     "&returnGeom=0&rset=1", function (data) { 

    var x = data.SearchResults[1].X; 
    console.log(x); 
    var y = data.SearchResults[1].Y; 
    console.log(y); 
    var loc = new esri.geometry.Point({ 
     "x": x, 
     "y": y, 
     "spatialReference":'PROJCS["SVY21",GEOGCS["SVY21[WGS84]",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",28001.642],PARAMETER["False_Northing",38744.572],PARAMETER["Central_Meridian",103.8333333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",1.366666666666667],UNIT["Meter",1.0]]' });   
    console.log(loc.x); 
    map.centerAndZoom(loc, 5); 
     }); 

}

從這些代碼中,我得到了變量x和y 23948.7465和47505.7986和以及loc.x當我打印出來,但錯誤信息在那裏。

然後,我通過把在值以上這樣的嘗試硬編碼x和y

function zoomPostal(postalCode) { 
$.getJSON("http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr" + 
     "&searchVal=" + postalCode + "&otptFlds=SEARCHVAL,CATEGORY" + 
     "&returnGeom=0&rset=1", function (data) { 

    var x = data.SearchResults[1].X; 
    console.log(x); 
    var y = data.SearchResults[1].Y; 
    console.log(y); 
    var loc = new esri.geometry.Point({ 
     "x": 23948.7465, 
     "y": 47505.7986, 
     "spatialReference":'PROJCS["SVY21",GEOGCS["SVY21[WGS84]",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",28001.642],PARAMETER["False_Northing",38744.572],PARAMETER["Central_Meridian",103.8333333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",1.366666666666667],UNIT["Meter",1.0]]' });   
    console.log(loc.x); 
    map.centerAndZoom(loc, 5); 
     }); 

}

有了這些代碼,變焦完美的作品沒有任何錯誤。

+0

使用Chrome開發者工具,並檢查你有什麼反應。並且在打印出x和y時顯示日誌。 –

+0

@HiroakiMachida當我嘗試打印loc.x時,我得到與我的x完全相同的值。我只是不知道爲什麼它不能在x中,但是當我對x和y的相同座標進行硬編碼時,它可以工作。 – hyperfkcb

+0

也許我誤解了一些東西。是否在map.centerAndZoom()函數中引發了該錯誤?如果是這樣,請粘貼該函數的代碼和哪一行產生錯誤。 –

回答

1

這個怎麼樣...

function zoomPostal(postalCode) { 
$.getJSON("http://www.onemap.sg/API/services.svc/basicSearch?token=qo/s2TnSUmfLz+32CvLC4RMVkzEFYjxqyti1KhByvEacEdMWBpCuSSQ+IFRT84QjGPBCuz/cBom8PfSm3GjEsGc8PkdEEOEr" + 
     "&searchVal=" + postalCode + "&otptFlds=SEARCHVAL,CATEGORY" + 
     "&returnGeom=0&rset=1", function (data) { 

    var x = data.SearchResults[1].X; 
    console.log(x); 
    var y = data.SearchResults[1].Y; 
    console.log(y); 
    var initializer = { "x": x, "y": y, "spatialReference":'PROJCS["SVY21",GEOGCS["SVY21[WGS84]",DATUM["D_WGS_1984",SPHEROID["WGS_1984",6378137.0,298.257223563]],PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Transverse_Mercator"],PARAMETER["False_Easting",28001.642],PARAMETER["False_Northing",38744.572],PARAMETER["Central_Meridian",103.8333333333333],PARAMETER["Scale_Factor",1.0],PARAMETER["Latitude_Of_Origin",1.366666666666667],UNIT["Meter",1.0]]' } 
    var loc = new esri.geometry.Point(initializer);   
    console.log(loc.x); 
    map.centerAndZoom(loc, 5); 
     }); 
} 
+0

雖然未經過測試。 –

+0

不,不起作用。是因爲它是一個雙重的東西,但不是一個變量? – hyperfkcb

+0

我已經測試過了。由於NaN錯誤,您必須分析變量x和y – hyperfkcb