Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/386.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/3/html/87.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 为什么谷歌地图api第二次部分呈现地图?_Javascript_Html_Dom_Google Maps Api 3 - Fatal编程技术网

Javascript 为什么谷歌地图api第二次部分呈现地图?

Javascript 为什么谷歌地图api第二次部分呈现地图?,javascript,html,dom,google-maps-api-3,Javascript,Html,Dom,Google Maps Api 3,我有以下js代码来渲染我的地图: function loadMap(address) { console.log(address); var geocoder = new google.maps.Geocoder(); geocoder.geocode({ "address": address }, function (results, status) { var pos = new google.maps.LatLng(53.681602, -

我有以下js代码来渲染我的地图:

function loadMap(address)
{
    console.log(address);

    var geocoder = new google.maps.Geocoder();
    geocoder.geocode({ "address": address }, function (results, status)
    {
        var pos = new google.maps.LatLng(53.681602, -1.911672); // default.
        if (status === google.maps.GeocoderStatus.OK) {
            pos = results[0].geometry.location;
        } else {
            alert("Error : Unable to locate!");
        }

        console.log(pos);

        var mapOptions = {
            center: pos,
            zoom: 10,
            zoomControl: true,
            zoomControlOptions: { position: google.maps.ControlPosition.RIGHT_TOP },
            mapTypeControl: false,
            panControl: false,
            scaleControl: false,
            streetViewControl: false,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };

        var map = new google.maps.Map(document.getElementById("mapCanvas"), mapOptions);
        var marker = new google.maps.Marker({
            map: map,
            position: pos,
            animation: google.maps.Animation.DROP
        });
    });
}
问题是第一次执行时,地图显示良好,但第二次,邮政编码仍然相同,lat/long显示相同,但地图显示部分,只有大约1/4的内容显示在div的左上角

我有没有做错什么

编辑:

经过jterrys的建议,它看起来仍然是一样的:

HTML/CSS:

#mapCanvas
{
    width: 655px;
        height: 472px;
    border: 1px solid #ccc;
}

<div id="mapCanvas"></div>
#地图画布
{
宽度:655px;
身高:472px;
边框:1px实心#ccc;
}

我使用的是JQuery 2.0,我以前使用设置
mapoptions
map
时也有过这种情况,只需在
geocode
回调之外设置一次,然后更新标记,而不是重新创建整个地图

显示一个地理代码,然后显示另一个,然后返回到第一个<代码>div定位看起来正常


根据更新的问题,在渲染地图之前等待第二个选项卡的实际激活。。。我在创建选项卡式地图时遇到了完全相同的问题

$("#two").click(function() {
    init();
}
这可能更加健壮,并与用户交互时触发的
选项卡
事件相关联,但这个快速示例说明了解决方案


作为附带的好处,这还可以节省显示地图(以及任何配额)所需的资源,直到用户实际激活该选项卡

您是否正在使用任何其他第三方库(
jQuery
,等等)?我曾经遇到过一些问题,比如
jqueryui选项卡
和谷歌地图渲染错误。是的,在我看来,这些看起来像jQuery选项卡。我将在下面更新我的答案,告诉你我必须做些什么来解决这个问题。你说的“第二次”是什么意思?请解释一下你到底在做什么。可能只是地图需要刷新,因为div容器的大小发生了变化。不幸的是,大量挖掘后的问题与IE缓存有关,在更改后,它在chrome中运行良好,但IE每2次就会出现一次混乱,但在强制清理缓存后,可以再次尝试。最后我放弃了IE10。