返回列表 發帖

[問題]goole map api 動態抓取地址

我是要從網頁中資料庫裡的地址去讀出google map位址
                                                                                
如果是在同一個網頁上執行,就沒問題
                                                                                
如果新開啟網頁來顯示地圖,會有開啟後,沒執行js的函數

(本身剛碰獨js,code是抓下來修改的,請前輩指導,感激不盡!)
                                                                                
--------------(這是準備開啟電子地圖的網頁)
                <input type="hidden" name="Addr" value="<?php echo $row_hous\
e_qry_2['Addr']; ?>"/>
                    (用hidden來讀取Addr的資料)
                  <input name="button" type="button" value="Search" onclick="j\
avascript:
                  window.open('myp.php?Addr=<? echo $row_house_qry_2['Addr'];?\
>'addressGps();)
                  " /> (重點在於我不知怎麼開啟新頁後,直接讀取 addressGps();)
-------------(這是js)
function load() {
                                                                                
       if (GBrowserIsCompatible()) {
                myMap = new GMap2(document.getElementById("my_map"));
                var myLatLng = new GLatLng(25.04763902653048, 121.517157554626\
46);
                myMap.setCenter(myLatLng, 15);
                myMap.addControl(new GLargeMapControl());
                document.getElementById('inLatLng').value = myLatLng.toString();
                document.getElementById('inLat').value = myLatLng.lat();
                document.getElementById('inLng').value = myLatLng.lng();
                                                                                
                myMarker = new GMarker( myLatLng );
                myMap.addOverlay( myMarker );
        }
}

function addressGps() {
        var myGeocoder = new GClientGeocoder();
        var address = document.getElementById('address').value;
        myGeocoder.getLatLng(address, function getRequest( point ){
              if(!point){
                 alert('地址錯誤');
             }else{
                                                                                
              if(!point){
                 alert('地址錯誤');
             }else{
                myMap.panTo( point );
               myMarker.setLatLng(point);
               document.getElementById('inLatLng').value = point.toString();
              document.getElementById('inLat').value = point.lat();
              document.getElementById('inLng').value = point.lng();
                       }
                            });
}
                                                                                
//]]>
</script>
[ 本帖最後由 s0926165 於 2009-10-29 23:39 編輯 ]

還看不太懂你的問題,程式碼最好用 code 標籤包起來,會比較清楚。

如果你是要開啟網頁後,直接執行 addressGps(),有很多種方式可以達成,最簡單的是用這一段 JavaScript:
window.onload = addressGps;
To infinity and beyond!

TOP

我是要從A網頁傳送一個$Addr的地址變數到判斷地圖的B網頁裡

而現在把地址變數帶過去後,讀入function addressGps()

我寫了一個判斷

<?   if (!empty($Addr)){ ?>
<Script language="javascript">
                      window.onload = addressGps;
                </script>
<? } ?>

想說...如果addr有值,就onload addressGps()

但這樣地圖就無法顯示出來

請示下

謝謝!

[ 本帖最後由 s0926165 於 2009-10-29 23:49 編輯 ]

TOP

好像要預先載入load()才能再送出變數給addr到addressGps()

有辦法把程式寫成只讀取一個函數又可以抓取變數

變成只需在<body onolad>就好

TOP

嗯,我有看到了,你應該已經有在 <body> 放 onload="load" 了,這是 Google Maps範例的寫法,所以你只要在 load() 裡面加上判斷即可:
function load() {  
                                                                                  
  if (GBrowserIsCompatible()) {  
    myMap = new GMap2(document.getElementById("my_map"));  
    var myLatLng = new GLatLng(25.04763902653048, 121.51715755462646);  
    myMap.setCenter(myLatLng, 15);  
    myMap.addControl(new GLargeMapControl());  
    document.getElementById('inLatLng').value = myLatLng.toString();  
    document.getElementById('inLat').value = myLatLng.lat();  
    document.getElementById('inLng').value = myLatLng.lng();  
                                                                      
    myMarker = new GMarker( myLatLng );  
    myMap.addOverlay( myMarker );  
  
    <?   if (!empty($Addr)){ ?>
    addressGps();
    <? } ?> 
  }  
}  
To infinity and beyond!

TOP

返回列表 回復 發帖