2011-10-06 125 views
0

我想知道是否有人能夠幫助我。通過Javascript傳遞PHP函數

我目前使用下面的代碼(源自nearby.org.uk),允許用戶通過HTML表單將OS格網引用轉換爲Lng座標。

function converttolatlng() { 
    var gr = document.getElementById('osgridref').value; 

    var osgb = new GT_OSGB(); 


    if (osgb.parseGridRef(gr)) { 
     var wgs84 = osgb.getWGS84(); 

     document.getElementById('osgb36lat').value = wgs84.latitude; 
     document.getElementById('osgb36lon').value = wgs84.longitude; 
    } 
    else { 
     document.getElementById('osgb36lat').value = "n/a"; 
     document.getElementById('osgb36lon').value = "n/a"; 
    } 

} 

但是,在每月的基礎上,我需要轉換一個約22,000 OS的網格引用xml列表。由於涉及的數據量很大,使用HTML表單顯然不切合實際,因此我一直在努力實現這一功能的自動化。該列表源於XML格式,因此我將以下代碼放在一起以將XML數據提取到PHP中。

<? 
    $objDOM = new DOMDocument(); 
    $objDOM->load("xmlfile.xml"); 

    $note = $objDOM->getElementsByTagName("Details"); 

    foreach($note as $value) 
    { 
    $NGR = $value->getElementsByTagName("NGR"); 
    $ngr = $NGR->item(0)->nodeValue; 

    echo "$ngr <br>"; 
    } 

我現在已經走到一個地步,我有點不確定下一步該怎麼做。我知道我需要通過Javascript函數轉換網格引用,並且還需要創建通常位於HTML表單上的Lat字段。然後我需要能夠將這些數據上傳到mySQL數據庫中的表中。

有人可能會看看這個請告訴我什麼我需要轉換網格引用,以及如何將它們上傳到我的數據庫。

非常感謝

UPDATE

此XML文件的摘錄:

<?xml version="1.0" encoding="UTF-8" standalone="yes" ?> 
- <Root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
- <Details> 
    <LISTENTRY>1003886</LISTENTRY> 
    <NGR>SS 00000 11111</NGR> 
    </Details> 

,並請找到一個鏈接到 'geotools' 文件here

+0

得出不knowning XML文件,並且彌補了'getWGS84' JavaScript函數的代碼結構不能有很大幫助。 –

+0

嗨,非常感謝您回覆我的帖子。我已經添加了xml文件的提取和鏈接到JS函數與我的原始帖子結合使用的'geotools'文件。我不想粘貼整個文件,因爲它是一個很長的腳本。親切的問候 – IRHM

回答

1

按照您描述的方式傳遞web服務應該是您最後的選擇,也許this php codethe Geograph project是您正在尋找的。如果不是,我會建議你把js代碼翻譯成php。編輯: 如何整合?我首先在OSB36上讀一下,瞭解<NGR>中的3個元素究竟是什麼以及它們應該如何解釋。最難的部分是將網格數字轉換爲偏移量(您需要與osgb36_to_gridref相反)。這樣做的一種方法可從parseGridRefgeotools2.js

+0

嗨,非常感謝回覆我的帖子。我已經看過這個,請原諒我的初學者無知。你能告訴我,我將如何將這個變量合併到我的exisitng腳本中?親切的問候 – IRHM

+0

非常感謝您的更新。我會看看geotools JS。親切的問候 – IRHM