2012-04-22 53 views
2

我正在使用JavaScript API開發Google地圖。我想知道在鼠標點擊過程中Command鍵(在Mac上)是否被按下。不過,看來,我沒有獲得這樣的信息:Google地圖 - 在點擊事件期間檢測到metaKey狀態?

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

有沒有解決這個辦法嗎?

回答

2

我認爲這可能與黑客有關:我沒有Mac,所以我無法測試。我所做的只是用metaKey代替ctrlKey。有一個我在JSFiddle中無法解決的錯誤,第一次點擊或meta +點擊將始終註冊爲常規點擊。它在JSFiddle之外很好地工作。

Meta-click應打印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 2012-04-24 15:56:28

+0

您可以通過清除窗口模糊事件上的變量狀態來改善此問題,如[對類似問題的此答案](http://stackoverflow.com/a/7719801/1353267)中指出的那樣 – Samveen 2014-12-24 06:00:13