Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
对纬度和高度的小调整;用Javascript实现经度_Javascript_Google Maps_Google Apps Script_Google Maps Markers - Fatal编程技术网

对纬度和高度的小调整;用Javascript实现经度

对纬度和高度的小调整;用Javascript实现经度,javascript,google-maps,google-apps-script,google-maps-markers,Javascript,Google Maps,Google Apps Script,Google Maps Markers,我正在使用谷歌表单从一群人那里收集简单的(城市、州)数据,然后将生成的电子表格连接到这个javascript的谷歌融合表(通过onSubmit) 然后,该融合表生成表单输入的映射。这是一个非常酷的服务,真的 不幸的是,如果两个用户进入同一个城市,则只能看到一个标记(因为脚本检索到的纬度和经度完全相同) 我的问题 有没有比我更精通javascript的人能告诉我如何调整代码来解决这个问题 我认为一个合理的解决方案是生成一个随机整数,比如说0到200之间,然后将该数字添加到纬度的0.00X处(对经

我正在使用谷歌表单从一群人那里收集简单的(城市、州)数据,然后将生成的电子表格连接到这个javascript的谷歌融合表(通过onSubmit)

然后,该融合表生成表单输入的映射。这是一个非常酷的服务,真的

不幸的是,如果两个用户进入同一个城市,则只能看到一个标记(因为脚本检索到的纬度和经度完全相同)

我的问题

有没有比我更精通javascript的人能告诉我如何调整代码来解决这个问题

我认为一个合理的解决方案是生成一个随机整数,比如说0到200之间,然后将该数字添加到纬度的0.00X处(对经度也是如此)。这将创建一个足够大的移动,使标记保持在同一个城市中,但将标记移动到足够远的距离,使其可见

这看起来像是进行地理编码的地方(第75行)

提前感谢,,
Ryan

在标记上写一个数字似乎更好,说明有多少人选择了那个城市/州。首先,您提出的解决方案无法很好地适应非常小的城市

但不管怎样,这就是你要做的事情:

var originalLongitude = /* from wherever */;
var originalLatitude = /* from wherever */;

var shiftedLongitude = originalLongitude + Math.random() * 0.002;
var shiftedLatitude = originalLatitude + Math.random() * 0.002;
请注意,
Math.random()
生成一个介于
0
1
之间的随机数,明白了

非常感谢您的指导,@Domenic

// If an address column was specified, geocode the value in it.
  if (addressColumn && column == addressColumn) {
    var latlng = geocode(value);

    newString = latlng.split(",");

    newLat = parseFloat(newString[0]) + Math.random() * 0.002;
    newLng = parseFloat(newString[1]) + Math.random() * 0.002;

    var newlatlng = newLat + "," + newLng;

    latlngColumn = latlngColumn.replace(/'/g, "\\\'");
    columns.push(latlngColumn);
    values.push(newlatlng);
  }

谢谢,@Domenic。我喜欢更改标记的建议,但是标记包含表单中提交的其他信息。现在我会尽我最大的努力实施你的解决方案。敬请期待!
// If an address column was specified, geocode the value in it.
  if (addressColumn && column == addressColumn) {
    var latlng = geocode(value);

    newString = latlng.split(",");

    newLat = parseFloat(newString[0]) + Math.random() * 0.002;
    newLng = parseFloat(newString[1]) + Math.random() * 0.002;

    var newlatlng = newLat + "," + newLng;

    latlngColumn = latlngColumn.replace(/'/g, "\\\'");
    columns.push(latlngColumn);
    values.push(newlatlng);
  }