谷歌地图不能在模态弹出窗口上呈现

时间:2017-12-18 09:20:13

标签: javascript jquery asp.net-mvc google-maps modal-dialog

下面是我的jquery代码,我使用局部视图在模态弹出窗口上渲染谷歌地图。

映射不呈现自身,如果我调整浏览器窗口大小或检查浏览器(在窗口调整大小时同样的事情),它会呈现。

当它按照纬度 - 经度设置渲染它不在中心时。

我想根据隐藏字段设置的纬度 - 经度动态渲染地图。目前我正在通过纬度= 30.704648600和经度= 76.717872600。

我不知道遗失了什么,请帮助,TIA。

jQuery: -

    $(document).ready(function () {
        var currLoc;
        if ($('#Latitude').val().length > 0 && $('#Longitude').val().length > 0)
            initialize($('#Latitude').val(), $('#Longitude').val());
    });

    function initialize(Latitude, Longitude) {
        var latlng = new google.maps.LatLng(Latitude, Longitude);
        var map = new google.maps.Map(document.getElementById('map_'), {
            center: latlng,
            zoom: 13
        });
        var marker = new google.maps.Marker({
            map: map,
            position: latlng,
            draggable: false,
            //anchorPoint: new google.maps.Point(0, -29)
        });
        map.setCenter(new google.maps.LatLng(Latitude, Longitude));

        var infowindow = new google.maps.InfoWindow();
        currLoc= $('#lastLocation').text();
        google.maps.event.addListener(marker, 'click', function () {
            var iwContent = '<div id="iw_container">' +
            '<div class="iw_title"><b>Last Location</b> : <span class="lastLoc">' + GetAddress(Latitude, Longitude) + '<span></div></div>';               
            infowindow.setContent(iwContent);               
            infowindow.open(map, marker);
        });
    }

    function GetAddress(Latitude, Longitude) {
        var LastLatLong = [];
        LastLatLong.push([Latitude, Longitude]);
        var latlngArray_ = LastLatLong[0];
        var latlngset_ = new google.maps.LatLng(latlngArray_[0], latlngArray_[1]);
        var geocoder = new google.maps.Geocoder();
        geocoder.geocode({ 'latLng': latlngset_ }, function (results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                if (results[0]) {
                    //currLoc= results[0].formatted_address;
                    if ($('.lastLoc').length > 0) {
                        debugger;
                        $('.lastLoc').text(results[0].formatted_address);
                    }
                }
            }
        });
    }

1 个答案:

答案 0 :(得分:0)

我得到了答案,可以先触发map的resize事件,然后使用其setCenter属性。

我现在改变了我的初始化功能。

function initialize(Latitude, Longitude) {
        var latlng = new google.maps.LatLng(Latitude, Longitude);
        var map = new google.maps.Map(document.getElementById('map_'), {
            center: latlng,
            zoom: 13
        });
        var marker = new google.maps.Marker({
            map: map,
            position: latlng,
            draggable: false,
            //anchorPoint: new google.maps.Point(0, -29)
        });
        map.setCenter(new google.maps.LatLng(Latitude, Longitude));

        var infowindow = new google.maps.InfoWindow();
        currLoc= $('#lastLocation').text();
        google.maps.event.addListener(marker, 'click', function () {
            var iwContent = '<div id="iw_container">' +
            '<div class="iw_title"><b>Last Location</b> : <span class="lastLoc">' + GetAddress(Latitude, Longitude) + '<span></div></div>';               
            infowindow.setContent(iwContent);               
            infowindow.open(map, marker);
        });
  setTimeout(function () {
            google.maps.event.trigger(map, "resize");
            map.setCenter(new google.maps.LatLng(Latitude, Longitude));
        }, 300);
    }