Вы звоните init()
до того, как функция была определена.
Поставьте вызов после определения функции.
<script type="text/javascript">
var map = null;
function init() {
var latlng = new google.maps.LatLng(51.5001524, -0.12623619);
var myOptions = {
zoom: 7,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
}
</script>
<script>init();</script>
Или просто избавьтесьвызова функции и просто выполнить его напрямую.Он будет работать так же, как и после того, как будет определено <div id="map_canvas">
.
<script type="text/javascript">
var map = null;
var latlng = new google.maps.LatLng(51.5001524, -0.12623619);
var myOptions = {
zoom: 7,
center: latlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
</script>
Не связано с конкретной проблемой: у вас есть еще один недостаток дизайна в вашем композитесоставная часть.Этот компонент нельзя использовать более одного раза в одном представлении.В результате вы получите несколько элементов <div id="map_canvas">
в HTML.Наличие нескольких элементов с одинаковым id
в HTML недопустимо.Исправьте это соответственно:
<div id="#{cc.clientId}_map_canvas" ...>
и
... document.getElementById("#{cc.clientId}_map_canvas") ...