PyMaps:如何在python中与javascript交互

PyMaps:如何在python中与javascript交互,python,python-3.x,google-maps-api-2,Python,Python 3.x,Google Maps Api 2,好的,我用代码设置了一个简单的程序。基本上,它只是用python在地图上设置点。非常基本。现在的问题是我有一个条件,当这种条件发生时,它会用一个简单的QWebView.setHtml()刷新页面。我现在想做的是找到一种方法来获取地图的当前缩放和中心信息并保存它。是否有必要进入javascript并获取信息,将其存储,然后将其写入html,就像我刷新之前的代码一样 很抱歉,如果这让人感到困惑或宽泛,我想不出使用python从地图中获取信息的方法。有许多方法可以与服务器(python)的客户端代码交

好的,我用代码设置了一个简单的程序。基本上,它只是用python在地图上设置点。非常基本。现在的问题是我有一个条件,当这种条件发生时,它会用一个简单的
QWebView.setHtml()
刷新页面。我现在想做的是找到一种方法来获取地图的当前缩放和中心信息并保存它。是否有必要进入javascript并获取信息,将其存储,然后将其写入html,就像我刷新之前的代码一样


很抱歉,如果这让人感到困惑或宽泛,我想不出使用python从地图中获取信息的方法。

有许多方法可以与服务器(python)的客户端代码交互。您可以在客户机上设置cookie,从Javascript向服务器发送AJAX请求,提交表单,或者采用类似WebSocket的更奇特的方式。没有更多的信息,我不确定我们能告诉你哪一个是最好的

您使用的是什么web框架

编辑:

哦,我明白了-您正在使用可编写脚本的web视图。。。可能类似于
zoom=view.evaluateJavaScript('map.getZoom();')
?从我对该库的了解来看,困难的部分可能是在JS中获取对map var的引用

编辑:

我认为如果不修改或扩展pymaps,这是不可能的,因为它在JS中本地定义GMap的范围,并且不会在任何地方公开它。我在一个小时内就做到了。然后,您可以使用类似于上面的内容访问缩放-可能是
zoom=view.evaluateJavaScript(“PyMaps[0].gmap.getZoom();”)

编辑:

如果这还不清楚,我所包含的要点要求您使用
MyPyMap
而不是
PyMap

从另一个角度,我意识到不能直接在视图上执行
evaluteJavaScript
。后续代码看起来更像这样

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

有许多方法可以与来自服务器的客户端代码交互(Python)。您可以在客户机上设置cookie,从Javascript向服务器发送AJAX请求,提交表单,或者采用类似WebSocket的更奇特的方式。没有更多的信息,我不确定我们能告诉你哪一个是最好的

您使用的是什么web框架

编辑:

哦,我明白了-您正在使用可编写脚本的web视图。。。可能类似于
zoom=view.evaluateJavaScript('map.getZoom();')
?从我对该库的了解来看,困难的部分可能是在JS中获取对map var的引用

编辑:

我认为如果不修改或扩展pymaps,这是不可能的,因为它在JS中本地定义GMap的范围,并且不会在任何地方公开它。我在一个小时内就做到了。然后,您可以使用类似于上面的内容访问缩放-可能是
zoom=view.evaluateJavaScript(“PyMaps[0].gmap.getZoom();”)

编辑:

如果这还不清楚,我所包含的要点要求您使用
MyPyMap
而不是
PyMap

从另一个角度,我意识到不能直接在视图上执行
evaluteJavaScript
。后续代码看起来更像这样

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

这不是一个web应用程序。它是一个python桌面应用程序。我只使用QWebView来显示google地图,因为它们只支持javascript,这是我知道如何在python窗口中显示网页的唯一方法。对此我深表歉意!刚抓住它,天哪。这非常有效。唯一的问题是答案有点错。evaluateJavascript应该是evaluateJavascript。非常感谢您的帮助。这不是一个web应用程序。它是一个python桌面应用程序。我只使用QWebView来显示google地图,因为它们只支持javascript,这是我知道如何在python窗口中显示网页的唯一方法。对此我深表歉意!刚抓住它,天哪。这非常有效。唯一的问题是答案有点错。evaluateJavascript应该是evaluateJavascript。非常感谢你的帮助。