
標題: [問題]goole map api 動態抓取地址 [打印本頁]
作者: s0926165 時間: 2009-10-29 17:28 標題: [問題]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 編輯 ]
作者: wmh 時間: 2009-10-29 20:48
還看不太懂你的問題,程式碼最好用 code 標籤包起來,會比較清楚。
如果你是要開啟網頁後,直接執行 addressGps(),有很多種方式可以達成,最簡單的是用這一段 JavaScript:
window.onload = addressGps;
作者: s0926165 時間: 2009-10-29 23:44
我是要從A網頁傳送一個$Addr的地址變數到判斷地圖的B網頁裡
而現在把地址變數帶過去後,讀入function addressGps()
我寫了一個判斷
<? if (!empty($Addr)){ ?>
<Script language="javascript">
window.onload = addressGps;
</script>
<? } ?>
想說...如果addr有值,就onload addressGps()
但這樣地圖就無法顯示出來
請示下
謝謝!
[ 本帖最後由 s0926165 於 2009-10-29 23:49 編輯 ]
作者: s0926165 時間: 2009-10-30 00:36
好像要預先載入load()才能再送出變數給addr到addressGps()
有辦法把程式寫成只讀取一個函數又可以抓取變數
變成只需在<body onolad>就好
作者: wmh 時間: 2009-10-30 08:28
嗯,我有看到了,你應該已經有在 <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();
<? } ?>
}
}
歡迎光臨 jsGears.com 技術論壇 - AJAX, JavaScript, jQuery, 網站開發, 前端效能優化 (http://jsgears.com/) |
|