2014-02-06 2 views
0

Я написал сценарий, который позволяет администратору нажимать на карту (google maps api v3), устанавливая столько мест, сколько он хочет, называя их. То есть, нажатие на карту показывает информационное окно с формой для именования этого местоположения. Эти местоположения сохраняются в базе данных (координаты LatLng) и отображаются как маркеры на карте.Установите координаты карт Google в качестве центрального экрана

Затем пользователи (admin или нет) могут выбрать любое из этих мест из поля выбора (по имени). Как только это будет выбрано, есть опция для отображения карты с маркером в выбранном месте. Маркер показывает правильно, но я хотел бы, чтобы карта была сосредоточена в этом месте. То есть маркер в центре экрана, но вместо этого он отображается в крайнем верхнем левом углу. На самом деле, изначально маркер даже не виден. Вам нужно перетащить карту и немного оставить ее для показа.

Это довольно странно, поскольку я использую те же координаты как для маркера, так и для центрального экрана. Вот мой код (или в соответствующей части, по крайней мере):

   var latlng = new google.maps.LatLng(parseFloat(location.lat), parseFloat(location.ltn)); 
       var latlng2 = new google.maps.LatLng(parseFloat(location.lat) + 0.025, parseFloat(location.ltn) - 0.05); 
       var map = new google.maps.Map($('.modal-body', modal)[0], { 
        'center': latlng, 
        'zoom': 13, 
        'mapTypeId': google.maps.MapTypeId.ROADMAP, 
       }); 
       var marker = new google.maps.Marker({ 
        'position': latlng, 
        'map': map, 
        'title': location.name, 
       }); 
       marker.setMap(map); 

Обратите внимание, как в этом примере я не использую latlng2 значение. Это то, что я пытался, но, похоже, работает только для определенной резолюции. Как я могу центрировать карту в этих координатах?

С наилучшими пожеланиями

Edit:

   $(map).focus(); 
       modal.on('shown', function() { 
        $(window).resize(function() { 
         google.maps.event.trigger(map, 'resize'); 
        }); 
        google.maps.event.trigger(map, 'resize'); 
       }); 
+0

Эта часть кода кажется, нормально. У вас есть что-то еще после этого, которое может переместить центр? –

+0

Я только что редактировал вопрос. Это помогает? –

+0

И да, я забыл сказать. Это показано в загрузочном модуле, хотя я не понимаю, почему это было бы актуальным =) –

ответ

2

Я не уверен, если это будет работать ... Если это окно изменения размеров причиной, чем это могло бы помочь. Я не знаю, как он будет взаимодействовать с другим кодом.

Добавить прослушиватель событий resize события:

... 
    marker.setMap(map); 

    google.maps.event.addListener(map, 'resize', function() { 
     map.setCenter(latlng); 
    }); 
+0

Смешно. Я использовал latlng2, поэтому он «кажется» центрирован. Я добавил ваш код, и он обратил вспять эффект! Вызов setCenter() фактически возвращает маркер в верхний левый угол. –

+0

Я не понимаю этого поведения. –

+0

проверить [этот вопрос] (http://stackoverflow.com/questions/11742839/showing-a-google-map-in-a-modal-created-with-twitter-bootstrap) возможно, вы получите подсказку –

Смежные вопросы