对纬度和高度的小调整;用Javascript实现经度
我正在使用谷歌表单从一群人那里收集简单的(城市、州)数据,然后将生成的电子表格连接到这个javascript的谷歌融合表(通过onSubmit) 然后,该融合表生成表单输入的映射。这是一个非常酷的服务,真的 不幸的是,如果两个用户进入同一个城市,则只能看到一个标记(因为脚本检索到的纬度和经度完全相同) 我的问题 有没有比我更精通javascript的人能告诉我如何调整代码来解决这个问题 我认为一个合理的解决方案是生成一个随机整数,比如说0到200之间,然后将该数字添加到纬度的0.00X处(对经度也是如此)。这将创建一个足够大的移动,使标记保持在同一个城市中,但将标记移动到足够远的距离,使其可见 这看起来像是进行地理编码的地方(第75行) 提前感谢,,对纬度和高度的小调整;用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处(对经
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);
}