2013-11-13 6 views
0

Я работаю над проектом миграции с карт Google V2 на V3 и написал следующий код, но получил ошибку и не смог решить проблему.Google map v2 to v3 code

Я использую неправильный метод Google Maps?

Что не так в этом коде?

<div id="map_canvas" style="width: 300px; height: 225px; font-family:arial; font-size:10px;"></div> 
<?php 
$map = getMap(); 
echo $map = str_replace('$_ADDRESS', 'MYADDRESS', $map); 


function getMap() 
{ 
    $mapKey = 'MYKEY'; 
    $_script = ' 
     <script type="text/javascript" src="//maps.googleapis.com/maps/api/js?key='. $mapKey .'&sensor=false"></script> 
     <script type="text/javascript"> 
      //<![CDATA[ 
      var map = null; 
      var geocoder = null; 

      // call initialize function 
      initialize($_ADDRESS); 

      // initialize map 

      function initialize() 
      { 
       var map = new google.maps.Map(document.getElementById("map_canvas"), { 
       center: new google.maps.LatLng(37.4419, -122.1419), 
       zoom: 13, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
       });    
       geocoder = new google.maps.Geocoder(); 

       // call show Address 
       showAddress(address); 
      } 

      // show address 
      function showAddress(address) 
      { 
       if (geocoder) 
       { 
        geocoder.getPosition(address, function(point) 
        { 
         if (!point) 
         { 
          alert(address + " not found"); 
         } 
         else 
         { 
          map.setCenter(point, 13); 
          var marker = new google.maps.Marker(point); 
          map.addOverlay(marker); 
          //marker.openInfoWindowHtml(address); 
         } 
        }); 
       } 
      } 
      //]]> 
    </script>'; 
    return $_script; 
} 
?> 

Любой idesa? Благодаря

+1

Какая ошибка вы получаете? И каково ожидаемое поведение? –

+0

@ karl-johab: нет ошибки с пустой страницей –

+0

Когда вы говорите пустую страницу, если вы «просматриваете источник», что вы видите. Можно предположить, что сценарий есть ..? –

ответ

1

Я разделить эти ответы как первые сделки с основами JavaScript, это то дела с помощью API Карт Google.

Как я никогда не использовал API Карт, я не могу комментировать V2, но, глядя на то, как вы делаете вещи в V3, я думаю, что это делает то, что вы ищете ...

<div id="map_canvas" style="width: 300px; height: 225px; font-family:arial; font-size:10px;"></div> 
<?php 
$map = getMap(); 
echo $map = str_replace('$_ADDRESS', 'MYADDRESS', $map); 


function getMap() 
{ 
    $mapKey = 'MYKEY'; 
    $_script = ' 
     <script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false&libraries=places"></script> 
     <script type="text/javascript"> 
      //<![CDATA[ 
      var map = null; 
      var geocoder = null; 

      // call initialize function 
      initialize("$_ADDRESS"); 

      // initialize map 
      function initialize(address) 
      { 
       map = new google.maps.Map(document.getElementById("map_canvas"), { 
       center: new google.maps.LatLng(37.4419, -122.1419), 
       zoom: 13, 
       mapTypeId: google.maps.MapTypeId.ROADMAP 
       });    
       geocoder = new google.maps.Geocoder(); 

       // call show Address 
       showAddress(address); 
      } 

      // show address 
      function showAddress(address) 
      { 
       if (geocoder) 
       { 
        geocoder.geocode({ "address": address }, function(results, status) 
        { 
         if (status == google.maps.GeocoderStatus.OK) 
         { 
          position = results[0].geometry.location; 
          map.setCenter(position, 13); 
          var marker = new google.maps.Marker({ map: map, position: position }); 
         } 
         else 
         { 
          alert(address + " not found"); 
         } 
        }); 
       } 
      } 
      //]]> 
    </script>'; 
    return $_script; 
} 
?> 

Сказав это, я бы поставил вопрос о str_replace прямо в javascript - можете ли вы доверять источнику этих данных? Если нет, то вы должны посмотреть, как очистить эту строку, прежде чем вставлять ее в свой javascript, или вы можете позволить людям вводить код на ваш сайт.

0

Глядя на фундаментальных яваскрипта вопросов, у вас есть ...

Попробуйте добавить кавычки строки, которые вы заменяющие в яваскрипте

echo $map = str_replace('$_ADDRESS', 'MYADDRESS', $map); 

СТАНОВИТСЯ:

echo $map = str_replace('$_ADDRESS', "'MYADDRESS'", $map); 

Таким образом, строка, содержащая адрес в javascript, правильно цитируется.

Кроме того, убедитесь, что вы можете получить адрес в функции инициализации:

function initialize() 

становится:

function initialize(address) 

Наконец, не переобъявить «карту», ​​если назначить ему значение в " инициализировать ", в противном случае вы ссылаетесь на другую переменную, которая существует только в этой функции:

var map = new google.maps.Map(document.getElementById("map_canvas"), { 

становится:

map = new google.maps.Map(document.getElementById("map_canvas"), { 
+0

, он работает, но почему бы не изменить адрес? –

+0

Просто заметили, что вы передаете MYADDRESS в функцию инициализации, но у этой функции нет параметров. Затем вы передаете адрес в showAddress, но эта переменная никогда не устанавливается. –

+0

Теперь я изменил эту строку: function initialize (address), а также получив значение адреса в функциях initialize и showAddress, но снова не меняя адрес. Я использую неправильный метод карт Google в функции showAddress? –