2012-04-22 3 views
2

私はjavascript APIを使用してGoogle Maps用に開発しています。私はマウスのクリック中にCommandキー(Mac上)が押されたかどうかを知りたい。しかし、私はそのような情報にアクセスすることができないようです:Googleマップ - クリックイベント中にmetaKeyステータスを検出しますか?

https://developers.google.com/maps/documentation/javascript/reference#MouseEvent 

これには何らかの方法がありますか?

答えて

2

私はハックで可能だと思います。私はMacを持っていないので、テストできません。私がしたのは、ctrlKeymetaKeyに置き換えただけです。 JSFiddleで回避できないバグがあります。最初のクリックまたはメタ+クリックは、常に通常のクリックとして登録されます。 JSFiddleの外でうまく動作します。

メタクリックするとlatLngが印刷されます。それを試してみてください:

http://jsfiddle.net/ThraL/5/

Windows版(CTRL)

http://jsfiddle.net/ThraL/4/

(あなたがmetaKey || ctrlKeyを書くことができますように見えますが、私は、私は別々にそれらを残しておきますテストすることはできませんので)。

<!DOCTYPE html> 
<html> 
    <head> 
    <style type="text/css"> 
     html, body, #map_canvas { margin: 0; padding: 0; height: 100% } 
    </style> 
    <script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script> 
    <script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script> 
    <script type="text/javascript"> 
     var map; 
     var mapOptions = { center: new google.maps.LatLng(0.0, 0.0), zoom: 2, 
     mapTypeId: google.maps.MapTypeId.ROADMAP }; 

     function initialize() { 
     map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions); 

     var metadown; 
     var clicks = 0; 

     $(window).keydown(function(evtobj) { 
     if(evtobj.metaKey) { 
      metadown = true; 
     } 
     $(window).one("keyup",function(evtobj) { 
      metadown = false; 
     }); 
     }); 

     google.maps.event.addListener(map, 'click', function(event) { 
     if(metadown) { 
      $("#console").val(event.latLng); 
      metadown = false; 
     } 
     else { 
      $("#console").val("meta not down (" + clicks + ")\n"); 
      clicks++; 
     } 
     }); 

     } 
     google.maps.event.addDomListener(window, 'load', initialize); 
    </script> 
    </head> 
    <body> 
<div id="display"> 
    <textarea id="console" rows="2" cols="30"></textarea> 
</div> 
    <div id="map_canvas"></div> 
    </body> 
</html> 
+0

ブリリアント!あなたのモックアップは私のために働きます、そして、私はこのコードを今日後で試してみましょう。 – user388554

+0

これを改善するには、[この類似の質問への回答](http://stackoverflow.com/a/7719801/1353267)で指摘されているように、ウィンドウのぼかしイベントで変数の状態をクリアすることで、 – Samveen

関連する問題