我正在开发一个使用Google Maps API的项目。我想创建一个页面,默认情况下会显示以旧金山为中心的嵌入式地图,但会根据所选的下拉菜单项添加特定的标记和折线。我不确定如何配置此列表以根据用户选择更改地图和标记显示。
我认为我需要做的是设置一个带有JavaScript的切换功能,以根据用户输入在不同的代码块上执行。不过,我是JavaScript的初学者,所以我不知道该怎么做。
现在我只设置了下拉列表和默认地图显示。任何建议将不胜感激。
<!DOCTYPE html>
<!-- The majority of this embedding code was borrowed from code.google.com/apis/maps/documentation/javascript/examples/map-simple.html -->
<html>
<head>
<meta name="viewport" content="width=page-width, initial-scale=1.0, user-scalable=no" />
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<link href="http://code.google.com/apis/maps/documentation/javascript/examples/default.css" rel="stylesheet" type="text/css" />
<link href="styles.css" rel="stylesheet" type="text/css" />
<title>Project 2: BART Route Map</title>
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=true"></script>
<script type="text/javascript">
function initialize() {
var myLatlng = new google.maps.LatLng(37.786453,-122.416649);
var myOptions = {
zoom: 12,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP,
scrollwheel: false
}
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
var marker = new google.maps.Marker({
position: myLatlng,
map: map,
title:"San Francisco"
});
}
</script>
</head>
<body onload="initialize()">
<h1> BART Route Map </h1>
<h2> Select a route: </h2>
<form id="routeselector">
<select name="mapchange">
<option value="DALY-DUBL">Daly City - Dublin/Pleasanton</option>
<option value="DALY-FRMT">Daly City - Fremont</option>
<option value="DUBL-DALY">Dublin/Pleasanton - Daly City</option>
<option value="FRMT-DALY">Fremont - Daly City</option>
<option value="FRMT-RICH">Fremont - Richmond</option>
<option value="MLBR-RICH">Millbrae/Daly City - Richmond</option>
<option value="SFIA-PITT">Millbrae/SFIA - Pittsburg/Bay Point</option>
<option value="PITT-SFIA">Pittsburg/Bay Point - SFIA/Millbrae</option>
<option value="RICH-FRMT">Richmond - Fremont</option>
<option value="RICH-MLBR">Richmond - Daly City/Millbrae</option>
</select>
</form>
<div id="map_canvas" style="height=100%; width=100%">
</div><!-- map_canvas -->
</body>
</html>
答案 0 :(得分:0)
您可以使用addDomListener()
来监听onChange
控件的appropraite DOM事件(可能是<select>
)。在该事件的处理程序内,您需要将现有标记的地图设置为null
,并将要显示的标记的地图设置为map
。如果您有合理数量的标记,则可以提前创建它们。如果你正在处理成千上万的标记,那就是另一回事了。如果必须根据需要创建标记,请确保了解作用域中作用域的工作原理。
我没有使用折线,但这个过程可能很相似,甚至可能相同。
我真的不认为switch
语句是你想要在这种情况下使用的,但是既然你问,你可以只使用Google javascript switch语句并找到合适的解释。即使是备受诟病的w3schools也有acceptable quick intro(虽然缺乏细节)。这是他们显示语法的方式:
switch(n)
{
case 1:
execute code block 1
break;
case 2:
execute code block 2
break;
default:
code to be executed if n is different from case 1 and 2
}