JavaScript-如何创建随机经度和纬度?

JavaScript-如何创建随机经度和纬度?,javascript,Javascript,我试图创建随机的经度和纬度。我需要在两者之间创建数字 -180.000和+180.000。所以,我可能得到101.325或-3.546或-179.561 你能告诉我一个简单的公式吗 谢谢大家的帮助。我结合了几个例子来满足我的需要。是的,我可以缩短代码,但这确实有助于了解发生了什么 // LONGITUDE -180 to + 180 function generateRandomLong() { var num = (Math.random()*180).toFixed(3);

我试图创建随机的经度和纬度。我需要在两者之间创建数字 -180.000和+180.000。所以,我可能得到101.325或-3.546或-179.561

你能告诉我一个简单的公式吗

谢谢大家的帮助。我结合了几个例子来满足我的需要。是的,我可以缩短代码,但这确实有助于了解发生了什么

// LONGITUDE -180 to + 180
function generateRandomLong() {
    var num = (Math.random()*180).toFixed(3);
    var posorneg = Math.floor(Math.random());
    if (posorneg == 0) {
        num = num * -1;
    }
    return num;
}
// LATITUDE -90 to +90
function generateRandomLat() {
    var num = (Math.random()*90).toFixed(3);
    var posorneg = Math.floor(Math.random());
    if (posorneg == 0) {
        num = num * -1;
    }
    return num;
}
这将得到-180到180的范围

如果你真的只需要3位小数

Math.round((Math.random()*360 - 180) * 1000)/1000
这应该行得通

Math.random() * 360 - 180

下面是我制作的一个函数:

function Rand(x, y){
    //Returns a random number between 0 and X if Y is undefined
    //Returns a random number between X and Y if Y is defined

    return x+(Math.random()*(y-x)) || Math.random()*x;
}
这适用于整数和浮点数

function generateRandomLatLng()
{
    var num = Math.random()*180;
    var posorneg = Math.floor(Math.random());
    if (posorneg == 0)
    {
        num = num * -1;
    }
    return num;
}
在您的情况下:
getRandomInRange(-180,180,3)

你可以试试

功能:

  • 圆形区域中的随机位置-以起点为中心
  • 矩形区域中的随机位置-北、南、西和东 极限
  • 以csv和json等不同格式检索位置

.toFixed(3)
是将数字四舍五入到小数点后3位的更好方法places@Gareth嗯。。。必须转换回数字,它只截断。。。没什么大不了的,但我更喜欢简单的mathTrue,我忘了它会返回字符串。“但它确实是圆的。”约瑟夫,看看我的回答。它使用
.toFixed()
并返回数字。神奇之处在于
*1
我真的很喜欢我得到的几个答案。我既不是数学天才,也不是JavaScript天才,所以我真的需要一些好的例子来达到我的特定目的。我马上发布我修改过的代码。感谢所有回答我问题的人。是的,这是一个非常有效的解决方案。谢谢正是我要找的。谢谢“网络忍者”?你看起来也像一个“DotJavascript忍者”。OP确实要求一个“快速公式”,所以这可能是好的,但请注意,它存在一个容易被忽视的偏向极点附近的点。请参阅,了解问题的解释和其他方法,诚然,这些方法不会那么“快”。要澄清,问题在于按照OP预期的方式使用此函数,而不是函数本身。做得很好!我非常喜欢你的解决方案。我确实意识到经度和纬度有不同的范围,不仅仅是-180到+180,所以我不得不修改我的问题和答案。谢谢此方法不处理编码解决方案,而是引用应用程序的使用。
function generateRandomLatLng()
{
    var num = Math.random()*180;
    var posorneg = Math.floor(Math.random());
    if (posorneg == 0)
    {
        num = num * -1;
    }
    return num;
}
function getRandomInRange(from, to, fixed) {
    return (Math.random() * (to - from) + from).toFixed(fixed) * 1;
    // .toFixed() returns string, so ' * 1' is a trick to convert to number
}
12.693
-164.602
-7.076
-37.286
52.347
-160.839