精通 Grails: 用 JSON 和 Ajax 实现异步 Grails
2009-10-26 00:00:00 来源:WEB开发网接着,将清单 12 中的 JavaScript 添加到 init() 函数后面:
清单 12. 实现 addAirport 和 drawLine
<script type="text/javascript">
var airportMarkers = []
var line
function addAirport(response, position) {
var airport = eval('(' + response.responseText + ')')
var label = airport.iata + " -- " + airport.name
var marker = new GMarker(new GLatLng(airport.lat, airport.lng), {title:label})
marker.bindInfoWindowHtml(label)
if(airportMarkers[position] != null){
map.removeOverlay(airportMarkers[position])
}
if(airport.name != "Not found"){
airportMarkers[position] = marker
map.addOverlay(marker)
}
document.getElementById("airport_" + position).innerHTML = airport.name
drawLine()
}
function drawLine(){
if(line != null){
map.removeOverlay(line)
}
if(airportMarkers.length == 2){
line = new GPolyline([airportMarkers[0].getLatLng(), airportMarkers[1].getLatLng()])
map.addOverlay(line)
}
}
</script>
清单 12 中的代码做的第一件事是声明两个新的变量:一个变量用于存放线条,另一个数组用于存放两个机场标记。对传入的 JSON 调用 eval() 之后,就可以直接调用 airport.iata、airport.name、airport.lat 和 airport.lng 等字段。(要温习 JSON 对象,请参见 清单 5)。
更多精彩
赞助商链接