使用Google Maps API V3和QWebView,地图不会响应鼠标点击

时间:2011-05-31 07:23:52

标签: google-maps google-maps-api-3 google-maps-markers qwebview

编辑4

所有这一切,当我认为这是标记问题,他们不被拖累! 现在我已经意识到,当它在Qt小部件中显示时,没有鼠标点击地图

以下代码,我粘贴在HTML文件中并通过Firefox打开,这完美无缺!当我点击QtWidget上的地图时,同样没有回应:rolleyes:

任何人都可以为我确认这个或告诉我我在做什么错吗?

                   Google Maps JavaScript API示例     

<script type="text/javascript"> 

var map;    
var latlng            = new google.maps.LatLng (34.7607233, -117.0107599);

var directionsDisplay = new google.maps.DirectionsRenderer ();;
var directionsService = new google.maps.DirectionsService ();

var pointsArray       = new Array();
var arrayToBeReturned = new Array();

function initialize ()
{
    var myOptions = 
    {
        zoom:8,
        center:latlng,
        mapTypeId:google.maps.MapTypeId.ROADMAP
    };

    map = new google.maps.Map (document.getElementById ("map"), myOptions);
    directionsDisplay.setMap (map); 

    google.maps.event.addListener (map, "click", function ()
                        {
                            alert("You clicked the map.");
                        });
    }

</script> 
</head>
<body onload="initialize()" topmargin="0" leftmargin="0">
<div id="map" style="width: 341px; height: 271px"></div>
<div id="directionsPanel" style="float:right;width:30%;height 100%"></div>
</body>
</html> 

3 个答案:

答案 0 :(得分:1)

您正在查看事件的错误位置:)在引用中,每个对象都有自己的事件。你可以在这里看到标记的那些:

[http://code.google.com/apis/maps/documentation/javascript/reference.html#Marker] [1]

我已多次使用dragend活动并且运作顺畅。

执行此操作的代码可能是:

    var map = new google.maps.Map(document.getElementById("map"), myOptions);

    var marker = new google.maps.Marker({
        position: latlng,
        map: map,
        draggable: true
    });

    google.maps.event.addListener(marker, 'dragend', function () {
        document.getElementById("txtLatitude").value = marker.getPosition().lat();
        document.getElementById("txtLongitude").value = marker.getPosition().lng();
    });

[1]:http://code.google.com/apis/maps/documentation/javascript/reference.html#Markermap =新

答案 1 :(得分:1)

找到解决方案:

在您要在Qt小部件中“加载”HTML文件(包含Javascript API)的源文件中添加此类。

class myWebPage : public QWebPage
{
    virtual QString userAgentForUrl(const QUrl& url) const {
        return "Chrome/1.0";
    }
};

然后在同一个源文件中的自己的类中,添加 setPage 函数调用,如下所示,看看魔术发生了!

MainScreen::MainScreen(QWidget *parent):QWidget(parent)
{
        ...
    ***map->setPage (new myWebPage());***
    map->load (QUrl("./index.html") ) ;
};

答案 2 :(得分:-1)

google.maps.event.addListener (initialPointMarker, 'click', 
                                  function () { map.closeInfoWindow(); });

点击参数

周围的单引号怎么样?