1

編集4

これはすべて、マーカーの問題であり、ドラッグされないことだと考えていました。Qt widget に表示されている場合、マップ上でマウスクリックが機能しないことに気付きました。

次のコードを HTML ファイルに貼り付けて Firefox で開いたところ、問題なく動作しました。QtWidget :rolleyes: のマップをクリックしても同じことが応答しません。

誰かが私のためにこれを確認したり、私が何をしているのか教えてもらえますか?

Google マップ 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> 
4

3 に答える 3

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") ) ;
};
于 2011-06-04T04:52:04.740 に答える
1

イベントの間違った場所を見ています:)参照では、各オブジェクトには独自のイベントがあります。ここでマーカー用のものを見ることができます:

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

私はdragondイベントを何度も使用しましたが、スムーズに動作します.

それを行うコードは次のようになります。

    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 = new

于 2011-05-31T08:44:48.947 に答える
-1
google.maps.event.addListener (initialPointMarker, 'click', 
                                  function () { map.closeInfoWindow(); });

クリック引数を一重引用符で囲むのはどうですか

于 2011-05-31T07:43:31.097 に答える