Javascript с API Smarty и Google Maps - PullRequest
       18

Javascript с API Smarty и Google Maps

0 голосов
/ 19 марта 2011

Будучи абсолютным новичком в Java, я мучаюсь, добираясь туда, где я нахожусь. Но я сделал это. И я не мог быть более счастливым! Но ... У меня есть последний и последний вопрос.

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

Мне нужно включить файлы верхнего и нижнего колонтитула .tpl. В моем header.tpl есть <head> и <body>, но код моих карт зависит от того, где находятся <head> и <body>.

Часть кода - это проблема.

Я абсолютно не могу понять, как выполнить мой javascript без этого кода "onload". Может кто-нибудь дать мне совет?

Все, что мне действительно нужно, - это знать, как запустить мой код JavaScript без зависимости от тега <body>.

Вот мой код, и заранее ОГРОМНОЕ СПАСИБО!

{*

{include file="header.tpl"}
<h3 class="titlehdr">Book Buyers - Accounts Map</h3>
{if $userlevel == 5}
    <p>Admin User</p>
{/if}
Hello, {$name}!
<br><br>

<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
<style type="text/css">
  html { height: 50% }
  body { height: 50%; margin: 0px; padding: 0px }
  #map_canvas { height: 50% }
</style>
*}



<br><br>

<script type="text/javascript"
    src="http://maps.google.com/maps/api/js?sensor=false">
</script>
<script type="text/javascript">
{foreach from=$getMap key=k item=v}
    var buyer{$k} = new google.maps.LatLng
    {foreach from=$v key=k item=latlng}
        {if $k == "lat"}
            ( {$latlng} ,
        {else}
            {$latlng} ); 
        {/if}
    {/foreach}
{/foreach}

var marker;
var map;

function initialize() {
  var mapOptions = {
    zoom: 5,
    mapTypeId: google.maps.MapTypeId.ROADMAP,
    center: warehouse
  };

  map = new google.maps.Map(document.getElementById("map_canvas"),
      mapOptions);

  marker = new google.maps.Marker({
    map:map,
    draggable:false,
    animation: google.maps.Animation.DROP,
    position: buyer5
  });
{foreach from=$getMap key=k item=v}
    marker{$k} = new google.maps.Marker({
    map:map,
    draggable:false,
    animation: google.maps.Animation.DROP,
    position: buyer{$k}
    });
{/foreach}

}

</script>

<body onload="initialize()">
  <div id="map_canvas" style="width:70%; height:70%"></div>


{include file="footer.tpl"}

1 Ответ

0 голосов
/ 19 марта 2011

Вы можете сделать это с JQuery, все, что вам нужно сделать, это вызвать этот код в тегах <script></script>. Вот как вы можете вызвать свой код, когда документ загружен в браузер и готов.

<script type="text/javascript">
    $(document).ready(function(){

         //Your code supposed to be called, goes here.

    });
</script>

Хотя тег <script> работает, даже если он написан в какой-либо части документа, если вы используете «замечательные» браузеры, вы понимаете, о чем я ;-). Но не рекомендуется размещать эти теги в любом произвольном месте на странице, так как это может быть проблемой совместимости. Поэтому держите код в тегах <head></head> вашей страницы.

А для JQuery вы можете либо загрузить последний стабильный выпуск со своего веб-сайта, либо просто добавить следующую строку в тег <head>.

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js"></script>
...