javascript - float 时围绕点的半径不是中心

标签 javascript google-maps google-maps-api-3

我这样做了,效果很好:

            var radiusMi = parseFloat(obj[8]);
            if (typeof radiusMi === 'undefined' || isNaN(radiusMi) || radiusMi == '') {
                radiusMi = 2;
            }
            var radiusMeters = radiusMi * 1609.344;
            var currentShape = new google.maps.Circle({
                map: map,
                radius: radiusMeters,
                strokeWeight: 0,
                fillColor: '#eb278d',
                fillOpacity: 0.25,
                center: circleLatLng
            });

radiusMi 时,问题就出现了。是一个 float 或低于 1 英里,它会偏离中心。请参见下图了解我的意思(radiusMi 此处设置为 0.5):


(来源:giodev.com)

小房子图标位于正确的位置,但它不是圆圈的中心点,我做错了什么?

最佳答案

纬度和经度是非常精确的 float 。 当您使用这些数字进行计算时,由于调用 round、floor、ceil 或简单地将其发送到服务器并检索它,可能会出现舍入错误。

很多因素都会导致精度从点后 8 位变为点后 6 位,这将导致数十米甚至数百米的差异,具体取决于精度损失。

我建议您在此处使用之前检查代码中使用 circleLatLng 的所有位置。因为游戏中可能会出现舍入错误。

确保circleLatLng不包含舍入错误,这可能会使圆中心偏离其原始位置。最好是在代码的开头制作一个副本,以便在这部分代码中显式使用,并准备一个不同的副本用于任意计算。

关于javascript - float 时围绕点的半径不是中心,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37862329/

相关文章:

google-maps - AngularUI - 谷歌地图 - map 未定义

javascript - Google Maps V3 不会删除事件监听器

google-maps - 使用谷歌地图从用户输入的街道地址获取正确的地址

android - 我的位置覆盖 : getMyLocation returning null

Android native 应用程序与跨平台应用程序

javascript - 带有 gmap 的可拖动 div 在移动浏览器上不起作用

javascript - 如何在 Protractor 中单击同一个按钮超过 50 次?

javascript - 如何使用 javascript 将来自 postgres sql 查询的值分配给前端的字段

javascript - 使用 AJAX 将日期从 SQL Server 传递到 jQuery Calendar

javascript - 协助安装 gulp