在mapTypeId设置为hybrid的情况下绘制此地图,它将绘制标记,但不绘制地图。如果将其设置为任何其他类型,则将绘制地图。
此外,如果我按F12键调出开发人员工具,地图也会绘制出来。
谁能让我知道我在做什么错。预先感谢您的帮助。
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Hybrid Map</title>
<style>
#map { height: 100%; }
html, body { height: 100%; margin: 0; padding: 0; }
</style>
</head>
<body>
<div id="map"></div>
<script>
function initMap() {
var myLatLng = {lat: 42.31391, lng: -83.2032224};
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 4,
center: myLatLng,
mapTypeId: 'hybrid'
});
var markerBounds = new google.maps.LatLngBounds();
var markJson = [
{Latitude: "42.34383937323032", Longitude: "-83.17619508650093", Accuracy: "24.0", Time: "09/08/2018 06:26:12"},
{Latitude: "42.34386827380892", Longitude: "-83.17627864355015", Accuracy: "12.0", Time: "09/08/2018 06:26:14"},
{Latitude: "42.343853008205535", Longitude: "-83.1763372997278", Accuracy: "4.0", Time: "09/08/2018 06:26:21"},
{Latitude: "42.34387834632138", Longitude: "-83.1763972853329", Accuracy: "4.0", Time: "09/08/2018 06:26:47"},
{Latitude: "42.343924132536046", Longitude: "-83.1763958907264", Accuracy: "6.0", Time: "09/08/2018 06:26:58"},
{Latitude: "42.343914870976725", Longitude: "-83.17646834553283", Accuracy: "16.0", Time: "09/08/2018 06:27:10"},
{Latitude: "42.34387223953695", Longitude: "-83.17649826835593", Accuracy: "16.0", Time: "09/08/2018 06:27:13"}
];
markJson.forEach(function(item, index) {
var newLatLng = new google.maps.LatLng(item.Latitude, item.Longitude);
var marker = new google.maps.Marker({
position: newLatLng,
map: map
});
markerBounds.extend(marker.position);
});
google.maps.event.addListenerOnce(map, "idle", function () {
map.fitBounds(markerBounds);
});
}
</script>
<script async defer src="https://maps.googleapis.com/maps/api/js?callback=initMap"></script>
</body>
</html>
答案 0 :(得分:0)
无论出于何种原因,当Google Maps执行fitBounds时,都会将缩放级别设置为22。在世界上这个位置,Google Maps的缩放级别没有图像22。将maxZoom设置为21初始化地图在这种情况下设置了问题。
var map = new google.maps.Map(document.getElementById('map'), {
maxZoom: 21,
center: myLatLng,
mapTypeId: 'hybrid'
});
Google地图还提供了getMaxZoomAtLatLng函数,以查找特定纬度和经度的最大缩放级别。
答案 1 :(得分:-1)
您没有在脚本标签中添加API密钥:
<script async defer src="https://maps.googleapis.com/maps/api/js?key=[API KEY]&callback=initMap"></script>
您可以在这里获得一个:https://developers.google.com/maps/documentation/javascript/get-api-key