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;
                    }

                });

除了右键单击上下文菜单之外,我还希望在信息窗口中有一个链接,该链接执行相同的操作 onclick:

<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 回答