2012-05-08 55 views
0

我是一個非常新的HTML5領域,我正在試圖製作一個程序,它將從PHP獲取數據並使用geocode從地址轉換爲Latlng。它是一個LBS程序,我嘗試了2個星期,我的問題是我不能將標記放入Google MAP中,我修正了定位器並加載了地圖,但標記無法登陸地圖,請幫助!謝謝,我非常感謝你的幫助。如果這段代碼有任何錯誤或問題,請給我慷慨的建議,我在這方面很新,我想在HTML5 Javascript中學習更多,謝謝你,我非常感謝你的建議!帶有PHP和Javascript的Google MAP API

我的代碼是在這裏:

   'enter code here`<?php 
       require_once 'Common/system_start.php'; 
       $sql="select addr from tab_mem order by sn desc "; 
       $result= mysql_query($sql); 
       $data=mysql_fetch_assoc($result); 
       $row=mysql_num_rows($result); 
       $n = array(); 
       for($i=0;$i<$rows;$i++) 
        { 
        $data=mysql_fetch_row($result); 
        $n[] = $data[0]; 
         } 
        echo '<script type="text/javascript">'; 
        echo var n = new Array("', join($n,'","'), '");'; 
        echo '</script>'; 
        ?> 
        <code> 

       <pre> 
      <!DOCTYPE html> 
      <html><head><meta charset="utf-8"> 

      <meta name="viewport" content="initial-scale=1.0,user-scalable=no"/> 
      <!-- Google Maps --> 
      <script type="text/javascript" src="http://maps.google.com/maps/api/js?         `enter code here`sensor=true"></script> 

      <script type="text/javascript" charset="utf-8" src="cordova-1.6.0.js"> 
      </script> 
      <!-- program main --> 
      <script type="text/javascript"> 
       var iterator=0; 
       markers=n; 
       var a=n.length; 


      function load() { 
      var map_div = document.getElementById("map_div"); 

      //initial locator 
      navigator.geolocation.watchPosition(onSuccess, onError, { frequency: 3000  `enter code here`}); 


       // decide location 
     function onSuccess(position){ 



//fetching latlng from GPS 

       var latlng = new google.maps.LatLng(position.coords.latitude, 
       `position.coords.longitude); 

       // display map 
       var gmap = new google.maps.Map(
        map_div, { 
        zoom:16, 
        center: latlng, 
        mapTypeId: google.maps.MapTypeId.ROADMAP 
        }); 




         //drop the marker 

        function drop() { 
        for (var i = 0; i < a; i++) { 
        setTimeout(function() { 
         }, i * 200); 
         } 
        } 



      //decode address to latlng 
      //pass address data from PHP 
      for(var i in n){ 
    var address=n; 
     geocoder=new google.maps.Geocoder(); 
     geocoder.geocode({'address':address},function(results,status){ 
    if(status==google.maps.GeocoderStatus.OK){ 
     //alert("AAA"); 
     address=results(i).geometry.location; 
    function addMarker() { markers.push(new google.maps.Marker({ 

         postion:results(i).geometry.location, 
         map:gmap, 
         animation:google.map.animation.DROP 
         //iterater++; 

     })); 
    //itertor++; 
    } 
    //markerNearBy.setMap(map); 
    }else{ 
    alert("Geocode was not sucessful for the following reason:"+status); 
    } 
    }); 
} 
    } 

    } 



    function onError(error) { 
      alert('code: '+ error.code+ '\n' 
       +'message: ' + error.message + '\n');  
     } 

    </script> 
    </head> 
    <body onLoad="load()"> 
    <!-- Map Display place --> 
    <div id="map_div" style="width:320px; height:480px;"></div> 
    </body> 
    </html> 
    <code> 

回答

0

您的代碼不看良好的。你在「for」循環中定義了「addMarker」函數。另外,它不會被叫到任何地方。

看看Google提供的用於處理標記和覆蓋圖的示例代碼,並嘗試模擬它。該示例只使用一個標記,但您可以簡單地遍歷結果。通過將Marker對象添加到數組中,並將地圖對象設置爲Marker的地圖屬性,您有正確的意圖,但您需要首先格式化/重構您的代碼,否則它將無法工作。

示例代碼:

https://developers.google.com/maps/documentation/javascript/overlays#RemovingOverlays

+0

Danimal,謝謝你的建議,幫助了我很多,我會想如何重組它,至少我的意圖是在正確的方向。謝謝 !!! –

+0

如何通過PHP將mySQL數據傳遞給我的Javascript?我嘗試了很多方法,但仍然沒有希望。 –

+0

@舒優昌:這是一個新問題。然而,在你提出這個問題之前,花一些時間閱讀谷歌的例子。一個涉及從數據庫中獲取標記的地圖位於https://developers.google.com/maps/articles/phpsqlajax –