0

特定の情報ウィンドウに固有のアクションを実行できる右クリック コンテキスト メニューのリスナーがあります。たとえば、ルート案内パネルを開いて入力するコードは次のとおりです。

google.maps.event.addListener(contextMenu, 'menu_item_selected', function(latLng, eventName){
                    switch(eventName){
                        case 'directions_from_click':
                            showDirections();
                            geocoder.geocode({latLng: latLng}, function(results, status) {
                              if (status == google.maps.GeocoderStatus.OK) {
                                if (results[0]) {
                                  fAddress = results[0].formatted_address;
                                  $('#start').val(fAddress);
                                  $('#panelWrapper').focus();
                                }
                              }
                            });
                            $('#panelWrapper').focus();
                            break;
                        case 'directions_to_click':
                            showDirections();
                            geocoder.geocode({latLng: latLng}, function(results, status) {
                                  if (status == google.maps.GeocoderStatus.OK) {
                                    if (results[0]) {
                                      fAddress = results[0].formatted_address;
                                      $('#end').val(fAddress);
                                      $('#panelWrapper').focus();
                                    }
                                  }
                                });
                            $('#panelWrapper').focus();
                            break;
                    }

                });

右クリックのコンテキスト メニューに加えて、クリックすると同じアクションを実行するリンクを情報ウィンドウに表示したいと思います。

<a class="fromLink">Directions from here</a>

このリンクのリスナーを追加して、コンテキスト メニューに似た機能を実行するにはどうすればよいですか? addDomListener 関数を試してみましたが、それがまさに私が必要としているものかどうかはわかりません。

4

1 に答える 1

0

API で何も見つからなかったので、onclick イベントを介して LatLng を関数に渡して、方向入力を入力することになりました。かなり醜いですが、次のようなものです:

function addMessageMarker(marker, addlInfo){

    var position = String(marker.getPosition());
    var fromLink = '<a class="infoLink" onClick="getFrom(&quot;' + position +  '&quot;)">Directions from here</a> - '; 
    ... //bunch of other stuff
}
function getFrom(position) {
                    showDirections();
                    //Convert the string value into a latLng
                    var latLng = position.replace("(","");
                    latLng = latLng.replace(")","");
                    latLng = latLng.replace(" ","");
                    latLngArr = latLng.split(",");
                    lat = parseFloat(latLngArr[0]);
                    lng = parseFloat(latLngArr[1]);

                    latLng = new google.maps.LatLng(lat,lng);

                    geocoder.geocode({latLng: latLng}, function(results, status) {
                      if (status == google.maps.GeocoderStatus.OK) {
                        if (results[0]) {
                      fAddress = results[0].formatted_address;
                      $('#start').val(fAddress);

                        }
                      }
                    });
                    $('#panelWrapper').focus();
                }
于 2013-02-11T21:04:18.143 に答える