Я нашел способ сделать это правильно.Идея такова:
1 - поместите 2 скрытых входа в представление, причем значение первого будет содержать lng, а второе будет содержать лат.Я использую шаблонный движок smarty:
<input type="hidden" name="lng" id="lng" value="{$lng}">
<input type="hidden" name="lat" id="lat" value="{$lat}">
2 - вызовите карты js api как просто с помощью callback = initMap
<script async defer
src="https://maps.googleapis.com/maps/api/js?client=%CLIEN_ID%&callback=initMap">
</script>
3 - поместите вашу функцию initMap в jsфайл, и вы получите значения lng и lat из скрытых входных данных, используя jquery.
function initMap() {
var longitude = $("#lng").val();
var latitude = $("#lat").val();
map = new google.maps.Map(document.getElementById('map'), {
center: {lat: latitude, lng: longitude},
zoom: 8
});
}
И это сработало.