从初始化调用“new google.maps.Circle”的函数失败

时间:2012-01-06 19:01:06

标签: javascript function google-maps initialization

有人可以请我描述一下,问题在哪里以及如何修复代码?

这不起作用:

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>有关,但实际上不知道该怎么做,如何将函数放在初始化之外以及它是如何工作的。

您能否创建一个简短的函数示例来创建圆圈并从初始化调用它?

2 个答案:

答案 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;。这可以防止必须绕过地图参考。