Html 谷歌地图卡在左上角-桌面解决方案';我不适合手机设计

Html 谷歌地图卡在左上角-桌面解决方案';我不适合手机设计,html,css,javascript,mobile,Html,Css,Javascript,Mobile,我在谷歌地图上遇到了一个问题,我在一个隐藏的DIV元素中渲染地图。贴图已渲染,但仅显示左上角,即使在我移动贴图后也是如此 我发现,解决这个问题的方法是等待渲染贴图,并在用户实际显示贴图之前绘制点。为此,我让一个间隔计数器每半秒迭代一次,以查看用户是否单击按钮打开/显示元素 这适用于桌面浏览器,但不能解决移动浏览器的相同问题。角落仍然被卡住,我不知道如何从移动的角度处理这个问题 <script type="text/javascript"> var locations = [S

我在谷歌地图上遇到了一个问题,我在一个隐藏的DIV元素中渲染地图。贴图已渲染,但仅显示左上角,即使在我移动贴图后也是如此

我发现,解决这个问题的方法是等待渲染贴图,并在用户实际显示贴图之前绘制点。为此,我让一个间隔计数器每半秒迭代一次,以查看用户是否单击按钮打开/显示元素

这适用于桌面浏览器,但不能解决移动浏览器的相同问题。角落仍然被卡住,我不知道如何从移动的角度处理这个问题

<script type="text/javascript">
    var locations = [SOME DATA];

    var map;
    var bounds;

    function initialize() {
        var myLatlng = new google.maps.LatLng(0, 0);
        var mapOptions = {
            zoom: 5,
            center: myLatlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        }

        map = new google.maps.Map(document.getElementById('map-canvas'), mapOptions);
        bounds = new google.maps.LatLngBounds();

        for (var i = 0; i < locations.length; i++) {
            var entity = locations[i];
            var myLatLng = new google.maps.LatLng(entity[6], entity[7]);

            var marker = new google.maps.Marker({
                position: myLatLng,
                map: map,
                icon: pinBase + pin
            });

            if(entity[8] < 5) {
                bounds.extend(marker.position);
            }

            var infowindow = new google.maps.InfoWindow({});

            if(entity[5] == "0") {
                entity[5] = "N/A";
            }

            contentString = "<div class=\"mapBaloon\"><b>" + entity[0] + "</b><br />WWW: <a href=\"http://" + entity[2] + "\">http://" + entity[2] + "</a><br />City: " + entity[3] + "<br />State: " + entity[4] + "<br />Phone: " + entity[5] + "<br />Distance: " + entity[8] + " miles</div>";
            bindInfoWindow(marker, map, infowindow, contentString);
        }

        map.fitBounds(bounds);
    }

    function bindInfoWindow(marker, map, infowindow, html) {
        google.maps.event.addListener(marker, 'click', function() {
            infowindow.setContent(html);
            infowindow.open(map, marker);
        });
    } 

    var myVar = setInterval(function() {
        google.maps.event.addDomListener(window, 'load', initialize);

        if($(".commArea2").is(":visible")) {
            clearInterval(myVar);
            google.maps.event.trigger(map, 'resize');
            map.fitBounds(bounds);
        }
    }, 500);         
</script>

var位置=[一些数据];
var映射;
var界;
函数初始化(){
var mylatng=new google.maps.LatLng(0,0);
变量映射选项={
缩放:5,
中心:myLatlng,
mapTypeId:google.maps.mapTypeId.ROADMAP
}
map=new google.maps.map(document.getElementById('map-canvas'),mapOptions);
bounds=新的google.maps.LatLngBounds();
对于(变量i=0;iWWW:
城市:“+实体[3]+”
状态:“+实体[4]+”
电话:“+实体[5]+”
距离:“+实体[8]+”英里; bindInfoWindow(标记、映射、infowindow、contentString); } 映射边界(bounds); } 函数bindInfoWindow(标记、地图、infowindow、html){ google.maps.event.addListener(标记'click',函数(){ setContent(html); 信息窗口。打开(地图、标记); }); } var myVar=setInterval(函数(){ google.maps.event.addDomListener(窗口“加载”,初始化); 如果($(“.commArea2”)是(“:可见”)){ 净距(myVar); google.maps.event.trigger(映射,'resize'); 映射边界(bounds); } }, 500);
我在手机使用方面也遇到了类似的问题。当div被触发显示时,我调用了
initialize()
函数

$('#open_btn').bind('touchstart', function(event){
    initialize();
})

我在手机使用方面也遇到了类似的问题。当div被触发显示时,我调用了
initialize()
函数

$('#open_btn').bind('touchstart', function(event){
    initialize();
})

我在手机使用方面也遇到了类似的问题。当div被触发显示时,我调用了
initialize()
函数

$('#open_btn').bind('touchstart', function(event){
    initialize();
})

我在手机使用方面也遇到了类似的问题。当div被触发显示时,我调用了
initialize()
函数

$('#open_btn').bind('touchstart', function(event){
    initialize();
})

在我脑海中,有几个可能的原因可能导致这种情况。因为它在桌面上工作,而不是在手机上,我怀疑你有种族歧视。桌面更快,它将更快地加载谷歌地图Javascript。您500毫秒的延迟听起来不足以在移动设备上等待。但是,您没有提高设置间隔。把它扔掉

谷歌提供了将回调添加到您的“


我遇到的另一个问题是,在做任何事情之前,您必须确保地图上有明确的宽度/高度“定义了所有的上/左/下/右或其他内容。但是,如果mapsapi无法计算父元素的显式宽度,您将在角落中看到一个漂亮的框。但正如你所说,它在一个地方起作用,所以很可能这不是问题所在。只需确保您使用的HTML或CSS中的某些内容在您的移动浏览器上不受支持。

在我的脑海中,有一些可能导致这种情况的原因。因为它在桌面上工作,而不是在手机上,我怀疑你有种族歧视。桌面更快,它将更快地加载谷歌地图Javascript。您500毫秒的延迟听起来不足以在移动设备上等待。但是,您没有提高设置间隔。把它扔掉

谷歌提供了将回调添加到您的“


我遇到的另一个问题是,在做任何事情之前,您必须确保地图上有明确的宽度/高度“定义了所有的上/左/下/右或其他内容。但是,如果mapsapi无法计算父元素的显式宽度,您将在角落中看到一个漂亮的框。但正如你所说,它在一个地方起作用,所以很可能这不是问题所在。只需确保您使用的HTML或CSS中的某些内容在您的移动浏览器上不受支持。

在我的脑海中,有一些可能导致这种情况的原因。因为它在桌面上工作,而不是在手机上,我怀疑你有种族歧视。桌面更快,它将更快地加载谷歌地图Javascript。您500毫秒的延迟听起来不足以在移动设备上等待。但是,您没有提高设置间隔。把它扔掉

谷歌提供了将回调添加到您的“

我遇到的另一个问题是,在做任何事情之前,您确实必须确保地图上有一个明确的宽度/高度。设置宽度/高度属性,在定义了所有顶部/左侧/底部/右侧的情况下执行“位置:绝对”,或者其他一些操作。但是如果地图API无法计算出明确的宽度/高度