Google Map API - служба маршрутов не выполняет автоматическое масштабирование, когда карта в модальном режиме - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть следующая функция, чтобы показать пользователю направление между 2 латами и lngs

$(document).ready(function(){
    initialize_direction();
});

function initialize_direction() {
    var directionDisplay;
    var directionsService = new google.maps.DirectionsService();
    var direction_map;

    directionDisplay = new google.maps.DirectionsRenderer();
    var myOptions = {
        mapTypeId: google.maps.MapTypeId.ROADMAP,
    }
    direction_map = new google.maps.Map(document.getElementById("direction_canvas"), myOptions);
    directionDisplay.setMap(direction_map);

    var start = '51.5074, 0.1278';
    var end = '<%= lat %>' + ',' + '<%= lng %>';
    var request = {
        origin:start,
        destination:end,
        travelMode: google.maps.DirectionsTravelMode.DRIVING
    };
    directionsService.route(request, function(response, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionDisplay.setDirections(response);
        }
    });
}

Проблема в том, что, если я помещаю холст, содержащий карту, на страницу, карта автоматически масштабируется, чтобы соответствовать 2 маркерам, но если я помещаю холст в модал Bootstrap, я получаю следующее, которое не масштабируется автоматически, чтобы соответствовать маркеры:

enter image description here

Кто-нибудь знает, как это исправить? Внизу - Бутстрап Модал

<div class="modal fade" id="direction_modal" role="dialog">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Direction to restaurant</h4>
        </div>
        <div class="modal-body">
            <div id="direction_canvas" style="width:100%;height:400px;"></div>
        </div>
    </div>
</div>

1 Ответ

0 голосов
/ 01 мая 2018

Звоните initialize_direction(); при модальном открытии. Попробуйте, как показано ниже, это может помочь.

 $(document).ready(function(){
	  $( "#direction_modal" ).on('shown.bs.modal', function(){
	    initialize_direction();
	  });
	});

	function initialize_direction() {
	    var directionDisplay;
	    var directionsService = new google.maps.DirectionsService();
	    var direction_map;

	    directionDisplay = new google.maps.DirectionsRenderer();
	    var myOptions = {
	        mapTypeId: google.maps.MapTypeId.ROADMAP,
	    }
	    direction_map = new google.maps.Map(document.getElementById("direction_canvas"), myOptions);
	    directionDisplay.setMap(direction_map);

	    var start = '51.5074, 0.1278';
	    var end = '51.2074, 0.1278';
	    var request = {
	        origin:start,
	        destination:end,
	        travelMode: google.maps.DirectionsTravelMode.DRIVING
	    };
	    directionsService.route(request, function(response, status) {
	        if (status == google.maps.DirectionsStatus.OK) {
	            directionDisplay.setDirections(response);
	        }
	    });
	}
  <title>Bootstrap Example</title>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <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.exp&sensor=false&key=AIzaSyAmqnSK2LDuPesG7GMG9thy_KDDmKnr7Zk"></script>
 
<div class="container">
  <h2>Modal Example</h2>
  <!-- Trigger the modal with a button -->
  <button type="button" class="btn btn-info btn-lg" data-toggle="modal" data-target="#direction_modal">Open Modal</button>


    
      <!-- Modal content-->
   <div class="modal fade" id="direction_modal" role="dialog">
  <div class="modal-dialog modal-lg">
    <div class="modal-content">
        <div class="modal-header">
            <button type="button" class="close" data-dismiss="modal">&times;</button>
            <h4 class="modal-title">Direction to restaurant</h4>
        </div>
        <div class="modal-body">
            <div id="direction_canvas" style="width:100%;height:400px;"></div>
        </div>
    </div>
</div>

  
</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...