在 PyQT 应用程序中的 Google 地图上绘制方位线
Plotting Lines of Bearing on a Google Map within a PyQT app
我正在向现有的基于 pyQT 的应用程序添加一些新功能,能够在地图上绘制方位线。
我已将 QWebView 添加到我的应用程序并在其中成功加载了 google 地图。到目前为止一切顺利。
但是如果我现在想在该地图上叠加方位线,我是否必须使用 google 地图 javascript API?
实际上我认为这意味着我必须在 python 代码中动态生成一个 html 页面,包括 javascript 元素来绘制折线,然后加载 html QWebView 中的页面?
这听起来是否正确,或者是否有更简单的方法可以达到同样的目的?
我愿意接受能够在地图上叠加线条的其他方法,越简单越好。但它必须可以在 pyQT 应用程序中实现。
我使用 google 地图做了类似的事情,但是是在 android 应用程序中。在那种情况下,它更简单,因为您可以直接调用 API 函数(从 Java)而无需 javascript 中间人..
经过一周的痛苦之后,我可以对这个问题有所了解
是的,这是可能的,但需要注意。
如果你想这样做,我建议你使用最新版本的所有东西,即 Python3
latest 和 PyQT5
latest,理想情况下 > 5.6
所以你得到 webengine
而不是 webkit
.
如果您的设置已过时,那么预计某些 javascript
内容将无法正常工作。例如,我的设置:
pyqt 4.11.4 py27_1
python 2.7.11 0
qt 4.8.7 1
不行!甚至无法绘制简单的多段线
conda
在这方面可以成为您的朋友,因为您可以快速设置具有不同包版本的沙盒 python 环境。我尝试了这个设置,并且能够绘制一条简单的多段线:
pyqt 5.6.0 py27h4b1e83c_5 anaconda
python 2.7.13 0 anaconda
qt 5.6.2 5 anaconda
请注意从 PyQT4
到 PyQT5
的切换,但仍然使用 Python2.7
。我无法面对将所有代码从 2
移植到 3
,但我可以扩展到 QT4
到 QT5
端口。
请注意,我也尝试了 Python3.5
和 PyQT4
组合:
('Qt version:', '4.8.7')
('SIP version:', '4.16.9')
('PyQt version:', '4.11.4')
这也奏效了。
最后,你应该瞄准的那个,Python3
和 PyQT5
:
Qt version: 5.5.1
SIP version: 4.17
PyQt version: 5.5.1
这也有效。
如果您有兴趣做任何与 QWebView
小部件相关的事情 javascript
,我不建议您使用 PyQT4
。
一旦你有一个 Python 和 QT 环境连接到最近的 webkit,或者更好的 webengine 构建,那么我同意相对容易获得 python 和 javascript 与 QWebView 小部件一起工作。对于我显示和操作 googlemaps 的用例,这是一种非常强大的方法。
我说 webengine 比 webkit 更好的原因是因为 QT 在其最新版本中放弃了 webkit,转而使用 webengine 作为浏览器引擎,因此使用 webengine 将更具前瞻性
我正在向现有的基于 pyQT 的应用程序添加一些新功能,能够在地图上绘制方位线。
我已将 QWebView 添加到我的应用程序并在其中成功加载了 google 地图。到目前为止一切顺利。
但是如果我现在想在该地图上叠加方位线,我是否必须使用 google 地图 javascript API?
实际上我认为这意味着我必须在 python 代码中动态生成一个 html 页面,包括 javascript 元素来绘制折线,然后加载 html QWebView 中的页面?
这听起来是否正确,或者是否有更简单的方法可以达到同样的目的?
我愿意接受能够在地图上叠加线条的其他方法,越简单越好。但它必须可以在 pyQT 应用程序中实现。
我使用 google 地图做了类似的事情,但是是在 android 应用程序中。在那种情况下,它更简单,因为您可以直接调用 API 函数(从 Java)而无需 javascript 中间人..
经过一周的痛苦之后,我可以对这个问题有所了解
是的,这是可能的,但需要注意。
如果你想这样做,我建议你使用最新版本的所有东西,即 Python3
latest 和 PyQT5
latest,理想情况下 > 5.6
所以你得到 webengine
而不是 webkit
.
如果您的设置已过时,那么预计某些 javascript
内容将无法正常工作。例如,我的设置:
pyqt 4.11.4 py27_1
python 2.7.11 0
qt 4.8.7 1
不行!甚至无法绘制简单的多段线
conda
在这方面可以成为您的朋友,因为您可以快速设置具有不同包版本的沙盒 python 环境。我尝试了这个设置,并且能够绘制一条简单的多段线:
pyqt 5.6.0 py27h4b1e83c_5 anaconda
python 2.7.13 0 anaconda
qt 5.6.2 5 anaconda
请注意从 PyQT4
到 PyQT5
的切换,但仍然使用 Python2.7
。我无法面对将所有代码从 2
移植到 3
,但我可以扩展到 QT4
到 QT5
端口。
请注意,我也尝试了 Python3.5
和 PyQT4
组合:
('Qt version:', '4.8.7')
('SIP version:', '4.16.9')
('PyQt version:', '4.11.4')
这也奏效了。
最后,你应该瞄准的那个,Python3
和 PyQT5
:
Qt version: 5.5.1
SIP version: 4.17
PyQt version: 5.5.1
这也有效。
如果您有兴趣做任何与 QWebView
小部件相关的事情 javascript
,我不建议您使用 PyQT4
。
一旦你有一个 Python 和 QT 环境连接到最近的 webkit,或者更好的 webengine 构建,那么我同意相对容易获得 python 和 javascript 与 QWebView 小部件一起工作。对于我显示和操作 googlemaps 的用例,这是一种非常强大的方法。
我说 webengine 比 webkit 更好的原因是因为 QT 在其最新版本中放弃了 webkit,转而使用 webengine 作为浏览器引擎,因此使用 webengine 将更具前瞻性