谷歌地图没有加载bootstrap模态

时间:2018-03-23 12:00:48

标签: php google-maps google-maps-api-3 bootstrap-modal

我正在使用谷歌地图,我需要在引导模式中显示它,但它不是在引导模式中加载,这里我已经添加了我的所有脚本,任何人都可以帮助我如何解决这个问题问题?我试着做一些谷歌搜索,但它没有帮助我解决这个问题,任何帮助真的很感激

<!-- Modal -->
<div id="mapModal" class="modal fade" role="dialog">
    <div class="modal-dialog modal-lg">

    <!-- Modal content-->
    <div class="modal-content" style="width: auto !important;height: 500px !important;">
        <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal">&times;</button>
        <h4 class="modal-title">Map</h4>
        </div>
        <div class="modal-body">
        <div id="map_canvas"></div>
        </div>
        <div class="modal-footer">
        <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
    </div>

    </div>
</div>

<!--<script src="https://maps.googleapis.com/maps/api/js?v=3&sensor=false"></script>-->

<script type="text/javascript">

    jQuery(document).ready(function () {
    var poly;
    var map;
    initialize();


    jQuery('#mapModal').on('show.bs.modal', function() {
        google.maps.event.trigger(map, "resize");
    }).modal('show');

        //get_map_data();

    //initialize();
        //google.maps.event.addDomListener(window, "load", initialize);
        MVCArrayBinder.prototype = new google.maps.MVCObject();
        MVCArrayBinder.prototype.get = function (key) {
            if (!isNaN(parseInt(key))) {
                return this.array_.getAt(parseInt(key));
            } else {
                this.array_.get(key);
            }
        }
        MVCArrayBinder.prototype.set = function (key, val) {
            if (!isNaN(parseInt(key))) {
                this.array_.setAt(parseInt(key), val);
            } else {
                this.array_.set(key, val);
            }
        }
    });

    function MVCArrayBinder(mvcArray) {
        this.array_ = mvcArray;
    }


    /**
     * Handles click events on a map, and adds a new point to the Polyline.
     * @param {MouseEvent} mouseEvent
     */
    function addLatLng(event) {
        var path = poly.getPath();
        path.push(event.latLng);
        var len = path.getLength();
        var marker = new google.maps.Marker({
            position: event.latLng,
            title: '#' + len,
            map: map,
            draggable: true
        });
        marker.bindTo('position', poly.binder, (len - 1).toString());
    }
    var locations = [
        [-34.028249, 151.157507, 3],
        [-33.80010128657071, 151.28747820854187, 2],
        [-33.950198, 151.259302, 1]
    ];


    function initialize() {
        var polyOptions = {
            strokeColor: '#000000',
            strokeOpacity: 1.0,
            strokeWeight: 3, map: map
        };
        poly = new google.maps.Polygon(polyOptions);
        var bounds = new google.maps.LatLngBounds();
        map = new google.maps.Map(document.getElementById('map_canvas'), {
            center: new google.maps.LatLng(10.9386, -84.888),
            zoom: 10,
            mapTypeId: google.maps.MapTypeId.ROADMAP,
            mapTypeControlOptions: {
                //mapTypeIds: ['satellite', 'nearmap']
                mapTypeIds: ['satellite']
            },
            draggableCursor: 'crosshair'
        });

        poly.binder = new MVCArrayBinder(poly.getPath());
        for (var i = 0; i < locations.length; i++) {
            var evt = {};
            evt.latLng = new google.maps.LatLng(locations[i][0], locations[i][1]);
            bounds.extend(evt.latLng);
            addLatLng(evt);
        }

        poly.setMap(map);
        map.fitBounds(bounds);

        google.maps.event.addListener(map, 'click', function (evt) {

            //initDots(evt.latLng);
            addLatLng(evt);
        });

    }

</script>
<script type="text/javascript">
    /*
     * Use bindTo to allow dynamic drag of markers to refresh poly.
     */



</script> 
<style type="text/css">
    html, body, #map_canvas {
    width: 100%;
    height: 100%;
    margin: 0px;
    padding: 0px
    }
</style>

1 个答案:

答案 0 :(得分:1)

var poly;
var map;
function openModal(){

$('#modal').modal({
        backdrop: 'static',
        keyboard: false
    }).on('shown.bs.modal', function () {
initialize()
    });
}

function MVCArrayBinder(mvcArray){
    this.array_ = mvcArray;
  }
  MVCArrayBinder.prototype = new google.maps.MVCObject();
  MVCArrayBinder.prototype.get = function(key) {
    if (!isNaN(parseInt(key))){
      return this.array_.getAt(parseInt(key));
    } else {
      this.array_.get(key);
    }
  }
  MVCArrayBinder.prototype.set = function(key, val) {
    if (!isNaN(parseInt(key))){
      this.array_.setAt(parseInt(key), val);
    } else {
      this.array_.set(key, val);
    }
  }
 
  function addLatLng(event) {
    var path = poly.getPath();
    path.push(event.latLng);
    var len = path.getLength();
    var marker = new google.maps.Marker({
      position: event.latLng,
      title: '#' + len,
      map: map,
      draggable : true
    });
    marker.bindTo('position', poly.binder, (len-1).toString());
  }
var locations = [
   [-34.028249, 151.157507, 3],
        [-33.80010128657071, 151.28747820854187, 2],
        [-33.950198, 151.259302, 1]
];


function initialize() {
  var polyOptions = {
      strokeColor: '#000000',
      strokeOpacity: 1.0,
      strokeWeight: 3, map: map
    };
  poly = new google.maps.Polygon(polyOptions);
  var bounds = new google.maps.LatLngBounds();
  map = new google.maps.Map(document.getElementById('map_canvas'), {
    center: new google.maps.LatLng(10.9386, -84.888),
    zoom: 10,
    mapTypeId: google.maps.MapTypeId.ROADMAP
  });

  poly.binder = new MVCArrayBinder(poly.getPath());
  for(var i = 0; i < locations.length; i++) {
    var evt = {};
    evt.latLng = new google.maps.LatLng(locations[i][0], locations[i][1]);
    bounds.extend(evt.latLng);
    addLatLng(evt);
  }

  poly.setMap(map);
  map.fitBounds(bounds);
} 

    google.maps.event.addDomListener(window, "load", initialize);
#map {
  height: 800px;
  width: 100%;
}

#map_canvas {
  min-height: 350px;
  max-width:650px;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
  <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js"></script>  
<script src="https://maps.googleapis.com/maps/api/js?v=3&key=AIzaSyBI9iSbSEo3h0LdqlqRFwnayYApQfmNXuE"></script>

<div class="container">
  <h2>Modal Example</h2>
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" onclick="openModal()">Open Modal</button>

  <!-- Modal -->
  <div class="modal fade" id="modal" role="dialog">
    <div class="modal-dialog">
    
      <!-- Modal content-->
      <div class="modal-content">
        <div class="modal-header">
          <button type="button" class="close" data-dismiss="modal">&times;</button>
          <h4 class="modal-title">Modal Header</h4>
        </div>
        <div class="modal-body">
          <div id="map_canvas"></div>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-default" data-dismiss="modal">Close</button>
        </div>
      </div>
      
    </div>
  </div>
  
</div>

希望这有助于你

相关问题