我正在用Python創建一個Qt應用程序,您可以點擊並在(谷歌)地圖上單擊並獲取位置的座標。地圖通過QWebView
加載一個簡單的HTML頁面顯示,用戶可以通過點擊來創建標記。在點擊地圖後,小部件的Screenshot。使用QtWebKit在桌面應用程序中檢索谷歌地圖v3標記的位置
但是,我很難將剛剛點擊過的位置座標恢復到Qt(這樣我就可以將它們用作變量 - 例如,將它們顯示在上面的頂部角落的QLineEdit
中,作爲標記的當前位置)。
這是HTML文件的相關部分:
<script type="text/javascript">
var map;
function initialize() {
var local = new google.maps.LatLng(-23.4,-40.3);
var myOptions = {
zoom: 5,
center: local,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
google.maps.event.addListener(map, 'rightclick', function(event) {
placeMarker(event.latLng);
});
}
function placeMarker(location) {
var clickedLocation = new google.maps.LatLng(location);
var marker = new google.maps.Marker({
position: location,
map: map
});
map.setCenter(location);
}
function dummyTxt() {
return 'This works.';
}
</script>
我一直在試圖與evaluateJavaScript
,但無法獲取座標。我試圖創建一個函數來訪問marker.getPosition()
的位置,但沒有運氣。下面的假人雖然工作..
newplace = QWebView.page().mainFrame().evaluateJavaScript(QString('dummyTxt()'))
>>> print newplace.toString()
This works.
關於如何獲得座標回Qt的任何建議?
編輯:
這裏是爲我工作的代碼:
def update_geo(self):
# Capture coordinates of the last marker on the map.
mark = self.map.page().mainFrame().evaluateJavaScript('document.getElementById("markerlocation").value').toString()
# Convert string to list of floats, stripping parentheses.
marker = str(mark).strip('()').split(', ')
decimals = [float(c) for c in marker]
在https://github.com/nelas/veliger/blob/master/veliger.py#L2374
謝謝Mkfnx。確實有幫助!我只改變了Qtcode直接通過js:webview.page()。mainFrame()。evaluateJavaScript('document.getElementById(「markerlocation」)。value')。toString() – nelas 2010-05-24 05:29:55
我沒有注意到javascript替代。我很高興看到它的幫助! – 2010-05-29 00:18:23