Javascript 谷歌地图动态标记的位置不正确-Lat和Long是准确的

Javascript 谷歌地图动态标记的位置不正确-Lat和Long是准确的,javascript,html,css,ajax,google-maps,Javascript,Html,Css,Ajax,Google Maps,使用Google Maps API,我正在动态添加地图标记以跟踪我们的2辆车。该网站是用asp.net c#mvc编写的,带有bootstrap 4.3.1,使用ajax请求从我们使用的车辆跟踪API中获取最新的标记位置。地图标记每5分钟更新一次,以显示当前位置 当在本地主机和我们的一个内部服务器上运行应用程序时,标记会准确地显示它们应该显示的位置。现在我已经将网站上传到外部网络服务器,我注意到地图标记不准确,并且总是位于错误的位置 我有一个屏幕截图,显示了在dev工具中检查的标记,您可以看到标

使用Google Maps API,我正在动态添加地图标记以跟踪我们的2辆车。该网站是用asp.net c#mvc编写的,带有bootstrap 4.3.1,使用ajax请求从我们使用的车辆跟踪API中获取最新的标记位置。地图标记每5分钟更新一次,以显示当前位置

当在本地主机和我们的一个内部服务器上运行应用程序时,标记会准确地显示它们应该显示的位置。现在我已经将网站上传到外部网络服务器,我注意到地图标记不准确,并且总是位于错误的位置

我有一个屏幕截图,显示了在dev工具中检查的标记,您可以看到标记应该位于的位置

我已经检查了标记的数据,在这方面一切似乎都很好,在检查了dev工具中的代码之后,似乎标记被CSS向下和向右推,但我似乎无法找到并取消选择任何影响标记位置的类

我已经设法在JSFIDLE中复制了这个问题,位置数据已经为这个演示进行了硬编码


var locs;
var-markersArray=[];
var映射;
函数initMap(){
locs=[{“lat”:“535658418”,“lng”:“-08491593”,“距离列表”:null},{“lat”:“528815088”,“lng”:“-21409461”,“距离列表”:null}];
map=新建google.maps.map(
document.getElementById('map'),
{中心:新google.maps.LatLng(54.113616,-1.607444),缩放:6});
对于(变量i=0;i
你可以看到,当你在谷歌地图上搜索位置:53.5658418,0.8491593时,它与我的地图上显示的位置不同

使用上述坐标在谷歌地图上显示的标记位置是我的标记应该显示的位置


是什么导致了这个问题?

看起来不准确是因为您正在使用
parseFloat
解析逗号分隔的字符串。请参考本帖

尝试注销此日志:

 console.log("Commas: " + parseFloat(locs[i].lat) + ", " + parseFloat(locs[i].lng));
 console.log("Dots: " + parseFloat(locs[i].lat.replace(',', '.')) + ", " + parseFloat(locs[i].lng.replace(',', '.')));
您将在输出中看到不同的坐标:

Commas: 53, 0
Dots: 53.5658418, -0.8491593
Commas: 52, -2
Dots: 52.8815088, -2.1409461
快速修复方法是使用
replace
将逗号替换为小数点,如上述代码所示,因此标记的位置设置如下:

var marker = new google.maps.Marker({
     position: {
        lat: parseFloat(locs[i].lat.replace(',', '.')),
        lng: parseFloat(locs[i].lng.replace(',', '.')),
     },
     ...
});
希望这有帮助

var marker = new google.maps.Marker({
     position: {
        lat: parseFloat(locs[i].lat.replace(',', '.')),
        lng: parseFloat(locs[i].lng.replace(',', '.')),
     },
     ...
});