2012-12-28 58 views
1

好的,所以我用this代碼來設置一個簡單的程序。基本上它只是在python中設置地圖上的點。非常基本。現在的問題是,我有一個條件,當發生這種情況時,它會刷新頁面,並使用簡單的QWebView.setHtml()。我現在想要做的是找到一種方法來獲取地圖的當前縮放和中心信息並保存它。有沒有辦法進入JavaScript並獲取信息,存儲它,然後將其寫入到html中,就像這段代碼在刷新之前所做的一樣?PyMaps:如何在Python中與javascript進行交互

對不起,如果這是混淆或廣泛的,我只是不能想到一種方法來從地圖使用Python獲取信息。

回答

1

有很多方法可以與來自服務器(Python)的客戶端代碼進行交互。你可以在客戶端設置一個cookie,從Javascript發送一個AJAX請求到服務器,提交一個表單,或者像WebSockets這樣更具異國情調的路線。沒有更多的信息,我不確定我們可以告訴你哪個是最好的。

您使用的是什麼web框架?

編輯:

哦,我見式您使用的是編寫腳本的Web視圖...也許像zoom = view.evaluateJavaScript('map.getZoom();')?從我可以看到的圖書館來看,困難的部分可能是獲取對JS中的map var的引用。

編輯:

我不認爲這是可能的,而無需修改或擴展pymaps,因爲它在本地範圍限定在GMAP JS和任何地方都不會揭露它。我在gist中完成了這項工作。然後,您可以使用類似於上述內容的方式訪問縮放,例如zoom = view.evaluateJavaScript("PyMaps[0].gmap.getZoom();")

編輯:

如果這不是clear-我列入要點要求您使用MyPyMap而不是PyMap

從另一個StackOverflow question,我意識到你不能做evaluteJavaScript直上一個視圖。隨後的代碼看起來更像這樣

doc = view.page().mainFrame().documentElement() 
zoom_level = doc.evaluateJavaScript("PyMaps[0].gmap.getZoom();") 
+0

這不是一個web應用程序。這是一個python桌面應用程序。我只使用QWebView顯示谷歌地圖,因爲它們只支持javascript,這就是我知道如何顯示在Python窗口網頁的唯一途徑。 – LiverpoolFTW

+0

對不起!剛剛抓住它。 –

+1

@LiverpoolFTW讓我知道,如果最後編輯幫助! –