根据下拉列表选择显示不同的地图标记和折线

时间:2011-08-06 21:57:00

标签: javascript google-maps-api-3 google-maps-markers

我正在开发一个使用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>

1 个答案:

答案 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
}
相关问题