javascript - 我的 Google JavaScript 地图会因浏览器和计算机的不同而不同
问题描述
我正在使用 Google Maps API,特别是“Maps JavaScript API”,并且我已经完成了大部分 JavaScript 代码,并且地图显示在我的浏览器 (Chrome) 中。
但问题是,当我在 Firefox 浏览器中打开文件时,或者当我在其他计算机的 Chrome 浏览器中打开相同的文件时……地图不会以正确的方式显示。主要问题在于缩放功能。
在我的 Chrome 上,地图将显示如下:
在 Firefox 或其他一些计算机上,地图将显示如下: 我尝试以不同的方式更改代码,并再次阅读 Google 文档。我尝试使用不同的变体
map.fitBounds(bounds);
map.panToBounds(bounds);
但我并没有从中得到任何好的结果。
这是完整的代码
<div class="ui-panelgrid-cell ui-g-12 ui-md-12">
<style>
#map {
height: -webkit-fill-available;
display: block;
position: static !important;
}
body #mapOverFlow .ui-dialog .ui-dialog-content {
overflow: hidden;
}
</style>
<div id="map" style="position: relative; overflow: hidden;"></div>
<script>
function initialize() {
var userCoor = [
["<div><h1>JLSKYLL REDES</h1><div><p></p><p><b>22246338</b></p></div></div>", 9.381300800000002, -
84.14509079999999
],
["<div><h1>Lirio Lodge</h1><div><p>Lirio Lodge is the ideal place for lovers of nature, has a privileged location in front of the beautiful Laguna Madre of God, in the channels of Tortuguero.</p><p><b>22825003</b></p></div></div>",
9.94591, -84.11847569999999
]
];
var mapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 2
};
var marker, i, userCoordinate, map;
var bounds = new google.maps.LatLngBounds();
map = new google.maps.Map(document.getElementById("map"), mapOptions);
var userCoorPath = [new google.maps.LatLng(9.381300800000002, -84.14509079999999), new google.maps.LatLng(
9.94591, -84.11847569999999)];
userCoordinate = new google.maps.Polyline({
path: userCoorPath,
strokeColor: "#FF0000",
strokeOpacity: 1,
strokeWeight: 2
});
userCoordinate.setMap(map);
var infowindow = new google.maps.InfoWindow();
for (i = 0; i < userCoor.length; i++) {
marker = new google.maps.Marker({
position: new google.maps.LatLng(userCoor[i][1], userCoor[i][2]),
map: map
});
var loc = new google.maps.LatLng(marker.position.lat(), marker.position.lng());
bounds.extend(loc);
google.maps.event.addListener(marker, 'click', (function (marker, i) {
return function () {
infowindow.setContent(userCoor[i][0]);
infowindow.open(map, marker);
}
})(marker, i));
}
center = bounds.getCenter();
map.fitBounds(bounds);
map.panToBounds(bounds);
}
</script>
<script type="text/javascript" src="https://maps.googleapis.com/maps/api/js?key=API_KEY&callback=initialize">
</script>
</div>
当您打开文件并添加 API_KEY 时,该地图应显示在您的浏览器中。现在它可能会随着缩放出现,或者我可以出现在很远的地方。
在 Firefox 和 Chrome 中尝试。
解决方案
您的地图没有center
设置。请注意,这是一个必需参数,但您永远不会将值分配center = bounds.getCenter()
给您的地图实例。尝试添加以下代码:
const center = bounds.getCenter();
map.setCenter(center);
此外,您的地图的缩放级别为 2。如果您不希望地图显示得太远,请将其更改为例如 8。
var mapOptions = {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 8
};
看看这个jsfiddle以获得演示和指导。无论浏览器如何,它都可以工作。
希望这对您有所帮助。
推荐阅读
- haskell - 如何让 Haskell 中的代码看起来很优雅?
- amazon-web-services - 如何使 EC2 用户数据脚本在 RDP 进入实例时可见的打开窗口中运行?
- python - 我找不到在新图像零点上拟合轮廓的方法
- google-cloud-platform - 存储对象查看者角色无法读取
- reactjs - 如何使用按钮取消选中 MaterialTable(mbrn/material-table) 的所有行?
- python - 无法通过 Selenium(Python)按类名找到 div
- regular-language - 如何仅使用正则表达式匹配给定字符串中的给定模式
- c# - 表格 2 文本框显示在表格 1 列表框中
- android - 使用自定义数据 + google Fitness api 实现数据库的最有效方法
- virtual-machine - Hypervisor 如何区分在其上运行的多个 VM 并将它们与底层硬件隔离?