因此,您并不是真正要求有关地图内容的图例,而只是一个切换选项。我从另一个问题(Toggle KML Layers in Google Maps v3)中得到了这个答案,但我清理了它,因为它最初对我不起作用。现在效果很好。这是我的一个:
// Define the kml layers
var kml = {
a: {
name: "Elevation Contours",
url:'https://website.com/id/LimaContours200.kml'},
b: {
name: "Districts",
url: 'https://https://website.com/id/LimaDistricts.kml'},
c:{
name: "CAPECO Zones",
url: 'https://website.com/id/ZonasCapeco.kml'}}
function initialize(){
var mapOptions ={
zoom: 12,
center: new google.maps.LatLng(-12.0456072,-76.9991801),
mapTypeId: google.maps.MapTypeId.SATELLITE,};
//Display the map
map = new google.maps.Map(document.getElementById("map-canvas"), mapOptions);
createTogglers();
removeAll();
startup();};
// the important function... kml[id].xxxxx refers back to the top
function toggleKML(checked, id) {
if (checked) {
var layer = new google.maps.KmlLayer(kml[id].url,{
preserveViewport: true,
suppressInfoWindows: true});
//store kml as obj
kml[id].obj = layer;
kml[id].obj.setMap(map);}
else {
kml[id].obj.setMap(null);
delete kml[id].obj;}};
// create the controls dynamically because it's easier, really
function createTogglers() {
var html = "<form><ul>";
for (var prop in kml) {
html += "<li id=\"selector-" + prop + "\"><input type='checkbox' id='" + prop + "'" +
" onclick='highlight(this,\"selector-" + prop + "\"); toggleKML(this.checked, this.id)' \/>" +
kml[prop].name + "<\/li>";}
html += "<li class='control'><a href='#' onclick='removeAll();return false;'>" +
"Remove all layers<\/a><\/li>" + "<\/ul><\/form>";
document.getElementById("toggle_box").innerHTML = html;};
// easy way to remove all objects
function removeAll() {
for (var prop in kml) {
if (kml[prop].obj) {
kml[prop].obj.setMap(null);
delete kml[prop].obj;}}};
// Append Class on Select
function highlight(box, listitem) {
var selected = 'selected';
var normal = 'normal';
document.getElementById(listitem).className = (box.checked ? selected: normal);};
function startup(){
// for example, this toggles kml b on load and updates the menu selector
var checkit = document.getElementById('b');
checkit.checked = true;
toggleKML(checkit, 'b');
highlight(checkit, 'selector-b');}