javascript - 谷歌地图在 Bootstrap 模式的左上中心开始路径

标签 javascript html twitter-bootstrap google-maps

我正在使用谷歌地图。单击图像,谷歌地图显示在 Bootstrap 模式上,使用 latlng 显示路线路径。所有功能都正常工作,但是

map 起始位置标记,我想在加载 map 时将标记位置居中,刚才是按照图像。起点位于左上角。我已经检查了很多示例,但所有示例都无法在我的代码中运行。

enter image description here

我还尝试使用调整大小、触发功能。

google.maps.event.trigger(map, 'resize');

map = new google.maps.Map(document.getElementById("map_canvas"), {
     mapTypeId: google.maps.MapTypeId.ROADMAP
});

HTML

<a href="#mapModal" data-toggle="modal">Click</a>

模态和脚本

<div id="mapModal" class="modal fade" tabindex="-1" role="dialog" aria-labelledby="gridModalLabel" aria-hidden="true">
        <div class="modal-dialog" role="document">
            <div class="modal-content">
                <div class="modal-header">
                    <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
                    <h4 class="modal-title" id="gridModalLabel">Map Display</h4>
                </div>
                <div class="modal-body">
                    <div class="container-fluid bd-example-row">
                        <div class="row">

                            <div id="map_polyline" style="width: 100%; height: 655px;"></div>

                            <script type="text/javascript">
                                function initialize() {

                                    var mapProp = new google.maps.Map(document.getElementById('map_polyline'), {
                                        zoom: 15,
                                        maxZoom: 30,
                                        minZoom: 1,
                                        streetViewControl: false,
                                        center: new google.maps.LatLng(23.01780,72.53076),
                                        mapTypeId: google.maps.MapTypeId.ROADMAP
                                    });

                                    var myTrip=new Array();

                                    myTrip.push(new google.maps.LatLng(23.01780,72.53076));
                                    myTrip.push(new google.maps.LatLng(23.01846,72.52987));
                                    myTrip.push(new google.maps.LatLng(23.01909,72.53054));
                                    myTrip.push(new google.maps.LatLng(23.01954,72.52991));
                                    myTrip.push(new google.maps.LatLng(23.02060,72.53064));
                                    myTrip.push(new google.maps.LatLng(23.02125,72.53006));
                                    myTrip.push(new google.maps.LatLng(23.02237,72.53076));
                                    myTrip.push(new google.maps.LatLng(23.02306,72.52988));
                                    myTrip.push(new google.maps.LatLng(23.02438,72.53021));
                                    myTrip.push(new google.maps.LatLng(23.02467,72.52899));
                                    myTrip.push(new google.maps.LatLng(23.02486,72.52769));
                                    myTrip.push(new google.maps.LatLng(23.02555,72.52695));
                                    myTrip.push(new google.maps.LatLng(23.02616,72.52656));
                                    myTrip.push(new google.maps.LatLng(23.02704,72.52641));
                                    myTrip.push(new google.maps.LatLng(23.02868,72.52664));
                                    myTrip.push(new google.maps.LatLng(23.03068,72.52700));
                                    myTrip.push(new google.maps.LatLng(23.03173,72.52555));

                                    var flightPath=new google.maps.Polyline({
                                        path:myTrip,
                                        strokeColor:"#0000FF",
                                        strokeOpacity:0.8,
                                        strokeWeight:2
                                    });
                                    flightPath.setMap(mapProp);
                                    google.maps.event.trigger(mapProp, 'resize');
                                }

                                google.maps.event.addDomListener(window, 'load', initialize);
                            </script>
                        </div>
                    </div>
                </div>
                <div class="modal-footer">
                    <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                </div>
            </div>
        </div>
    </div>

最佳答案

尝试 this

$('#myMapModal').on('show.bs.modal', function() {
   resizeMap();
})

function resizeMap() {
   if(typeof map =="undefined") return;
   setTimeout( function(){resizingMap();} , 400);
}

function resizingMap() {
   if(typeof map =="undefined") return;
   var center = map.getCenter();
   google.maps.event.trigger(map, "resize");
   map.setCenter(center); 
}

关于javascript - 谷歌地图在 Bootstrap 模式的左上中心开始路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40799704/

相关文章:

javascript - angular-ui-router 嵌套 View 在使用直接 url 或刷新时页面未加载

javascript - 我怎样才能重用这个功能?

javascript - header需要在页面滚动时上下滑动

html - 将图像扩展到整个屏幕

html - Bootstrap 导航栏文本对齐问题与小屏幕尺寸

javascript - 我把我的标志放在两条线之间,我想为这两条线制作动画

javascript - (JS) 使用 IF/Switch 语句更改 slider 值

javascript - 尽管有 Object.assign 和 Spread 语法,但 Redux 中的对象仍会发生变化

css - 第三个元素在调整浏览器大小后换行到下一行

css - bootstrap 上的偏移量和边距