我在嘗試使用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);
});
}
有了這些代碼,變焦完美的作品沒有任何錯誤。
使用Chrome開發者工具,並檢查你有什麼反應。並且在打印出x和y時顯示日誌。 –
@HiroakiMachida當我嘗試打印loc.x時,我得到與我的x完全相同的值。我只是不知道爲什麼它不能在x中,但是當我對x和y的相同座標進行硬編碼時,它可以工作。 – hyperfkcb
也許我誤解了一些東西。是否在map.centerAndZoom()函數中引發了該錯誤?如果是這樣,請粘貼該函數的代碼和哪一行產生錯誤。 –