有人可以请我描述一下,问题在哪里以及如何修复代码?
这不起作用:
function initialize() {
var b = new google.maps.LatLng(49.190033, 16.6150523); var Copt = {center:b, map: map, radius: 1000};
var mapOptions = { zoom: 13, center: b, mapTypeId: google.maps.MapTypeId.ROADMAP }
var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
cir();
//var C = new google.maps.Circle(Copt);C.setMap(map);
}
function cir(){
var C = new google.maps.Circle(Copt); C.setMap(map);
}
但是当我把函数cir()的内容放在initialize中时,它的工作原理是: 这里
function initialize() {
var b = new google.maps.LatLng(49.190033, 16.6150523);
var Copt = {center:b, map: map, radius: 1000};
var mapOptions = { zoom: 13, center: b, mapTypeId: google.maps.MapTypeId.ROADMAP }
var map = new google.maps.Map(document.getElementById("map_canvas"),mapOptions);
//cir();
var C = new google.maps.Circle(Copt);C.setMap(map);
}
我认为,它与部分<body onload="initialize()">
<div id="map_canvas" style="width:100%; height:100%"></div>
有关,但实际上不知道该怎么做,如何将函数放在初始化之外以及它是如何工作的。
您能否创建一个简短的函数示例来创建圆圈并从初始化调用它?
答案 0 :(得分:1)
我认为您遇到的问题是,您的C
函数在范围内没有map
变量。试试这个:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
</head>
<body onload="initMap();">
<div id="map_canvas"></div>
<script>
function initMap() {
var options = {
// your options here
};
var map = new google.maps.Map(document.getElementById('map_canvas'), options);
drawCircle(map);
};
function drawCircle(map) {
// draw circle logic in here; use map as you would normally
};
</script>
</body>
</html>
将map
参数传递给drawCircle()
函数意味着它可以使用它。我不熟悉Circle
对象,但您应该可以从这里实现代码。
答案 1 :(得分:1)
我通常在全球范围内声明var map;
。这可以防止必须绕过地图参考。