问题 1.)我创建了选择 ROADMAP 的示例,您可以查看特定的 overlayMapType(并使用其他模式隐藏它),复制并粘贴到您的 test.html,查看并享受!希望您可以对其进行编辑以满足您的需求:
<!DOCTYPE html>
<html>
<head>
<title>Google Maps JavaScript API v3 Example: Overlay MapTypes</title>
<link href="https://developers.google.com/maps/documentation/javascript/examples/default.css" rel="stylesheet">
<script src="https://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script>
function CoordMapType(tileSize) {
this.tileSize = tileSize;
}
CoordMapType.prototype.getTile = function(coord, zoom, ownerDocument) {
var div = ownerDocument.createElement('div');
div.innerHTML = coord;
div.style.width = this.tileSize.width + 'px';
div.style.height = this.tileSize.height + 'px';
div.style.fontSize = '10';
div.style.borderStyle = 'solid';
div.style.borderWidth = '1px';
div.style.borderColor = '#AAAAAA';
return div;
};
var map;
var chicago = new google.maps.LatLng(41.850033,-87.6500523);
function initialize() {
var mapOptions = {
zoom: 4,
center: new google.maps.LatLng(-33, 151),
mapTypeControl: true,
mapTypeControlOptions: {
style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
zoomControl: true,
zoomControlOptions: {
style: google.maps.ZoomControlStyle.SMALL
},
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById('map_canvas'),
mapOptions);
// Insert this overlay map type as the first overlay map type at
// position 0. Note that all overlay map types appear on top of
// their parent base map.
map.overlayMapTypes.insertAt(0, new CoordMapType(new google.maps.Size(256, 256)));
// we check mapType when it is changing
google.maps.event.addListener( map, "maptypeid_changed", function( evnt ) {
if(map.mapTypeId === "roadmap") {
// show my custom map layer - but only if its not already there
// note: you could also check more specifily your map type here
if(map.overlayMapTypes.getLength() == 0) {
map.overlayMapTypes.insertAt(0, new CoordMapType(new google.maps.Size(256, 256)));
}
} else {
// if something else, remove it
// note: you could also check more specifily your map type here, but for now
// we just check if something is already there
if (map.overlayMapTypes.getLength() > 0){
map.overlayMapTypes.removeAt(0);
}
}
});
}
</script>
</head>
<body onload="initialize()">
<div id="map_canvas" style="width: 640px; height: 480px;">map div</div>
</body>
</html>
问题 2.)尝试但不可能(高度保护),改用谷歌自定义地图控件 - 这似乎是唯一的选择:(
https://developers.google.com/maps/documentation/javascript/controls#CustomControls
编辑:
您是否尝试过将 google 路线图类型添加为自己的基础层,这样您就可以像本例中一样给它自己的名称(查看右上角的选择):https ://google-developers.appspot.com/maps/documentation/javascript/examples /maptype-base?hl=fi然后您将在显示 CoordMapType 网格(或您想要的覆盖图)的那个谷歌地图上添加覆盖图(如我的示例中)。这样你还不会得到那个复选框,但至少你可以在普通的谷歌地图控制器中用自己的选择和名称查看它?我现在没有时间测试这个理论,因为我在工作哈哈。:)
但基本上你可以完成然后下拉在哪里
- 地图(谷歌路线图)
- 我的图层(谷歌路线图在它上面的覆盖图在哪里,或几个)?
或者,您可以尝试使用 console.log(map); 并尝试找到更多的方法,而不仅仅是:
CoordMapType.prototype.name = 'My base layer';
CoordMapType.prototype.alt = 'My base layer map type';
..如果这已经创建为基础层选择,则可能在某个地方隐藏了该复选框选项。那些复选框的东西必须总是覆盖地图选择切换。