调用“”的函数;新谷歌地图圈;from初始化失败

calling function for "new google.maps.Circle" from initialize failed

本文关键字:from 初始化 失败 谷歌地图 函数 调用      更新时间:2023-09-26

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

这不起作用:

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>部分有关,但实际上不知道该做什么,如何将函数置于初始化之外,以及这是如何工作的。

你能创建一个创建圆的函数的简短例子并从初始化开始调用它吗?

我认为您遇到的问题是,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对象,但您应该能够从这里实现代码。

我通常全局声明var map;。这就避免了必须绕过地图参考。