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

发布于 2025-01-11 18:28:56 字数 993 浏览 0 评论 0原文

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

使用上面的脚本,我可以获得度、分和秒,例如 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;

该脚本在控制台中不起作用且没有错误。如何将作为字符串出现的innerHTML转换为可以使用的形式[40.6976,-74.2598]。

<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

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

不知在何时 2025-01-18 18:28:56

检查 typeof 是否为 "string"
如果为 true — 使用 将参数值转换为对象JSON.解析

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>

Check for typeof is "string"
If true — convert the argument value to Object using JSON.parse

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>

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文