Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/454.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/google-maps/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 谷歌地图没有完全加载_Javascript_Google Maps_Google Api - Fatal编程技术网

Javascript 谷歌地图没有完全加载

Javascript 谷歌地图没有完全加载,javascript,google-maps,google-api,Javascript,Google Maps,Google Api,这是我的密码 <script src="https://maps.google.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script> <script> function initialize() { var myLatlng = new google.maps.LatLng(-33.8688, 151.2195);

这是我的密码

<script src="https://maps.google.com/maps/api/js?sensor=false&libraries=places" type="text/javascript"></script>
<script> 
    function initialize() {
        var myLatlng = new google.maps.LatLng(-33.8688, 151.2195);
        var mapOptions = {
            center: new google.maps.LatLng(-33.8688, 151.2195),
            zoom: 17,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById('map_auto'), mapOptions);

        var input = document.getElementById('event_input_auto');
        var autocomplete = new google.maps.places.Autocomplete(input);

        autocomplete.bindTo('bounds', map);

        var infowindow = new google.maps.InfoWindow();
        marker = new google.maps.Marker({
            position: myLatlng, 
            map: map
        });

        /*new added*/
        google.maps.event.addListener(map, 'center_changed', function() {
            var location = map.getCenter();
            //new added
            placeMarker(location);
            displayLocation(location.lat(),location.lng());

        });
        google.maps.event.addListener(map, 'zoom_changed', function() {
            zoomLevel = map.getZoom();      
        });
        google.maps.event.addListener(marker, 'dblclick', function() {
            zoomLevel = map.getZoom()+1;
            if (zoomLevel == 20) {
                zoomLevel = 10;
            }
            map.setZoom(zoomLevel);

        });


        /*new added*/


        google.maps.event.addListener(autocomplete, 'place_changed', function() {
            $('#map_holder').show();
            google.maps.event.addListenerOnce(map, 'idle', function(){
                google.maps.event.trigger(map, 'resize');
                map.setCenter(location);
            });


            infowindow.close();
            var place = autocomplete.getPlace();
            if (place.geometry.viewport) {
              map.fitBounds(place.geometry.viewport);
            } else {
              map.setCenter(place.geometry.location);
              map.setZoom(17);  // Why 17? Because it looks good.
            }
            //alert(autocomplete.getBounds());
            var image = new google.maps.MarkerImage(
                place.icon, new google.maps.Size(71, 71),
                new google.maps.Point(0, 0), new google.maps.Point(17, 34),
                new google.maps.Size(35, 35));
            marker.setIcon(image);
            marker.setPosition(place.geometry.location);

            var address = '';
            if (place.address_components) {
              address = [
                (place.address_components[0] &&
                 place.address_components[0].short_name || ''),
                (place.address_components[1] &&
                 place.address_components[1].short_name || ''),
                (place.address_components[2] &&
                 place.address_components[2].short_name || '')].join(' ');
            }

            infowindow.setContent('<div><b>' + place.name + '</b><br>' + address);
            infowindow.open(map, marker);
        });

        // Sets a listener on a radio button to change the filter type on Places
        // Autocomplete.
        var setupClickListener = function(id, types) {
        var radioButton = document.getElementById(id);
        google.maps.event.addDomListener(radioButton, 'click', function() {
          autocomplete.setTypes(types);
        });
        }

        setupClickListener('changetype-all', []);
        //setupClickListener('changetype-establishment', ['establishment']);
        //setupClickListener('changetype-geocode', ['geocode']);
    }
google.maps.event.addDomListener(window, 'load', initialize);

function placeMarker(location) {    
    var clickedLocation = new google.maps.LatLng(location);
    marker.setPosition(location);
}

function displayLocation(latitude,longitude){
    var request = new XMLHttpRequest();

    var method = 'GET';
    var url = 'http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude+'&sensor=true';
    var async = true;

    request.open(method, url, async);
    request.onreadystatechange = function(){
      if(request.readyState == 4 && request.status == 200){
        var data = JSON.parse(request.responseText);
        var address = data.results[0];
        //document.write(address.formatted_address);
        document.getElementById("event_input_auto").value = address.formatted_address;
      }
    };
    request.send();
};


</script>

<input type="text" name="location" class="input-xxlarge required" id="event_input_auto" value="" />
<div id="map_holder" style="display: none;">
<div id="map_auto" style="height: 300px; width: 800px;" ></div>
</div>

函数初始化(){
var mylatng=new google.maps.LatLng(-33.8688151.2195);
变量映射选项={
中心:新google.maps.LatLng(-33.8688151.2195),
缩放:17,
mapTypeId:google.maps.mapTypeId.ROADMAP
};
var map=new google.maps.map(document.getElementById('map_auto'),mapOptions);
var input=document.getElementById('event_input_auto');
var autocomplete=new google.maps.places.autocomplete(输入);
autocomplete.bindTo('bounds',map);
var infowindow=new google.maps.infowindow();
marker=新的google.maps.marker({
职位:myLatlng,
地图:地图
});
/*新增*/
google.maps.event.addListener(map'center_changed',function(){
var location=map.getCenter();
//新增
地点标记(位置);
显示位置(location.lat(),location.lng());
});
google.maps.event.addListener(映射'zoom_changed',函数(){
zoomLevel=map.getZoom();
});
google.maps.event.addListener(标记'dblclick',function()){
zoomLevel=map.getZoom()+1;
如果(zoomLevel==20){
zoomLevel=10;
}
map.setZoom(zoomLevel);
});
/*新增*/
google.maps.event.addListener(自动完成,'place\u changed',函数(){
$('map#u holder')。show();
google.maps.event.addListenerOnce(map'idle',function(){
google.maps.event.trigger(映射,'resize');
地图设置中心(位置);
});
infowindow.close();
var place=autocomplete.getPlace();
if(place.geometry.viewport){
map.fitBounds(place.geometry.viewport);
}否则{
地图。设置中心(地点。几何。位置);
map.setZoom(17);//为什么是17?因为它看起来不错。
}
//警报(autocomplete.getBounds());
var image=new google.maps.MarkerImage(
place.icon,新的google.maps.Size(71,71),
新的google.maps.Point(0,0),新的google.maps.Point(17,34),
新google.maps.Size(35,35));
marker.setIcon(图像);
标记器.设置位置(位置.几何.位置);
var地址=“”;
if(位置、地址和组件){
地址=[
(地址为[0]&&
place.address_components[0]。缩写_name | |“”),
(地点、地址和组件[1]&&
place.address_components[1]。缩写为|||“”,
(地点、地址和组件[2]&&
place.address_components[2]。缩写_name | |“”)。join(“”);
}
infowindow.setContent(''+place.name+'
'+地址); 信息窗口。打开(地图、标记); }); //在单选按钮上设置侦听器以更改位置上的筛选器类型 //自动完成。 var setupClickListener=函数(id、类型){ var radioButton=document.getElementById(id); google.maps.event.addDomListener(单选按钮,'click',函数(){ 自动完成。设置类型(类型); }); } setupClickListener('changetype-all',[]); //setupClickListener('changetype-Establish',['Establish']); //setupClickListener('changetype-geocode',['geocode']); } google.maps.event.addDomListener(窗口“加载”,初始化); 函数placeMarker(位置){ var clickedLocation=new google.maps.LatLng(位置); 标记器。设置位置(位置); } 功能显示位置(纬度、经度){ var request=new XMLHttpRequest(); var方法='GET'; var url='1〕http://maps.googleapis.com/maps/api/geocode/json?latlng=“+纬度+”、“+经度+”&传感器=真”; var async=true; open(方法、url、异步); request.onreadystatechange=函数(){ if(request.readyState==4&&request.status==200){ var data=JSON.parse(request.responseText); var地址=数据。结果[0]; //文件。写入(地址。格式化的地址); document.getElementById(“事件\输入\自动”)。值=地址。格式化\地址; } }; request.send(); };
#Map_holder
显示:块

但是当
#map_holder
display:none
时,我需要加载map。这是我的要求

我要做什么才能完全加载地图

来自文档

resize-当div 更改大小:google.maps.event.trigger(映射“调整大小”)


因此,在从文档resize中将显示更改为block后,请尝试
google.maps.event.trigger(映射,'resize')
,开发者应在地图上触发此事件

google.maps.event.addListenerOnce(map, 'idle', function(){
       google.maps.event.trigger(map, 'resize');
       map.setCenter(location);
});
在下面添加上面的代码

$('#map_holder').show();

详细说明您的要求完整地图未加载。我的意思是您要做的事情为什么需要显示:无覆盖显示:BlockOK,所以创建一个类似于按钮单击或键控的事件,以便您可以使用jquery更改其显示值听起来有点粗鲁,与其尝试建议的内容,不如先尝试您的代码。你应该试着调试你的代码,或者至少把问题解决。你不是有这个吗?我在20分钟前回答了这个问题,但我删除了它,因为我看到你已经有了它。我找到的是google.maps.event.addListenerOnce(map'idle',function(){google.maps.event.trigger(map'resize');map.setCenter(location);});他没有工作。现在我只使用了google.maps.event.trigger(映射“resize”);相反