简体   繁体   English

将Sting转换为javascript中的[x,y]坐标

[英]Convert Sting to [x, y] coordinates in javascript

 <script type="text/javascript"> var src = [40.6976, -74.2598]; function convertToDMS(src) { function toDMS(n) { n = Math.abs(n); var d = Math.floor(n); n = n - d; n *= 60; var m = Math.floor(n); n = n - m; n *= 60; var s = Math.floor(n); return "" + d + " " + m + " " + s; } var dir0 = src[0] > 0? "N": "S"; var dir1 = src[1] > 0? "E": "W"; console.log(toDMS(src[0]) + dir0); console.log(toDMS(src[1]) + dir1); } convertToDMS(src); </script> <div id="locationdiv">[40.6976,-74.2598]</div>

Using the script above I am able to get degree, minute and second like 40°41'46.0"N+74°18'08.0"W使用上面的脚本,我可以获得度数、分和秒,例如 40°41'46.0"N+74°18'08.0"W

However if instead of using 
var src = [40.6976,-74.2598];
I use
var src = document.getElementById("locationdiv").innerHTML;

the script does not work with no error in console.该脚本在控制台中没有错误的情况下不起作用。 How do I convert the innerHTML which comes as a string to the form [40.6976,-74.2598] which can be used.如何将作为字符串出现的 innerHTML 转换为可以使用的 [40.6976,-74.2598] 形式。

Check for typeof is "string"检查typeof是否为"string"
If true — convert the argument value to Object using JSON.parse如果为真——使用 JSON.parse 将参数值转换为Object

 function toDMS(n) { n = Math.abs(n); const d = Math.floor(n); n = n - d; n *= 60; const m = Math.floor(n); n = n - m; n *= 60; const s = Math.floor(n); return `${d}° ${m}' ${s}"`; } function convertToDMS(latLng) { if (typeof latLng === "string") latLng = JSON.parse(latLng); const [lat, lng] = latLng; const dirLat = lat > 0? "N": "S"; const dirLng = lng > 0? "E": "W"; console.log(`${toDMS(lat)} ${dirLat}`); console.log(`${toDMS(lng)} ${dirLng}`); } convertToDMS([40.6976, -74.2598]); convertToDMS(document.querySelector("#locationdiv").textContent);
 <div id="locationdiv">[40.6976,-74.2598]</div>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM