Google Maps Проблема с Zend Framework - PullRequest
1 голос
/ 19 июля 2009

Привет. У меня проблемы с вставкой карты из карт Google и использованием платформы отправки.

Моя проблема похожа на Вопрос 921811

Однако при добавлении сценария в мое представление я получаю API googlemaps дважды, и карта не отображается в представлении.

Это то, что я добавляю в скрипт вида

<?php 

$this->headScript()->appendFile('http://maps.google.com/maps?file=api&;v=2&;sensor=true&;key=ABQIAAAAHSJ3TgOTyvA1VzwU8g4Y7RT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRmCy1h3nGv3n46kcqaFljsimqfWw');
$this->headScript()->appendScript('  var map = null;
        var geocoder = null;

        function initialize() {
          if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map_canvas"));
            map.setCenter(new GLatLng(37.4419, -122.1419), 13);
            geocoder = new GClientGeocoder();
          }
        }

        function showAddress(address) {
          if (geocoder) {
            geocoder.getLatLng(
              address,
              function(point) {
                if (!point) {
                  alert(address + " not found");
                } else {
                  map.setCenter(point, 13);
                  var marker = new GMarker(point);
                  map.addOverlay(marker);
                  marker.openInfoWindowHtml(address);
                }
              }
            );
          }
        }
    ');
    ?> 

Однако это добавляет API карт в два раза с большим количеством экранированного HTML, что приводит к сбою загрузки карт. например,

<script type="text/javascript" src="&lt;script src=&quot;http://maps.google.com/maps?file=api&amp;amp;v=2&amp;amp;sensor=true&amp;amp;key=ABQIAAAAHSJ3TgOTyvA1VzwU8g4Y7RT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRmCy1h3nGv3n46kcqaFljsimqfWw&quot; type=&quot;text/javascript&quot;&gt;&lt;/script&gt;"></script>
<script type="text/javascript" src="http://maps.google.com/maps?file=api&amp;;v=2&amp;;sensor=true&amp;;key=ABQIAAAAHSJ3TgOTyvA1VzwU8g4Y7RT2yXp_ZAY8_ufC3CFXhHIE1NvwkxRmCy1h3nGv3n46kcqaFljsimqfWw"></script>

<script type="text/javascript">
//<!--
var map = null;
         var geocoder = null;

        function initialize() {
          if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map_canvas"));
            map.setCenter(new GLatLng(37.4419, -122.1419), 13);
            geocoder = new GClientGeocoder();
          }
        }
.....

Есть идеи, почему API карт Google добавляется дважды с помощью экранированных тегов html? Я понятия не имею, и примеры, которые я нашел, похоже, не имеют этой проблемы.

Заранее спасибо

1 Ответ

2 голосов
/ 20 июля 2009

Причина, по которой вы не видите ни одной карты, заключается в том, что URL в вашем вызове appendFile() не работает. Удалить все точки с запятой:

http://maps.google.com/maps?file=api&v=2&sensor=true&key=whatever

Это исправит второй тег <script> и заставит карту Google работать на самом деле.

Это все же оставляет вас с первым тегом <script>. Но это должно быть связано с тем, как вы на самом деле печатаете содержимое помощника вида HeadScript. Можете ли вы показать нам, как выглядит этот код?

...