2

我有一张谷歌地图 V3 地图。当用户单击它时,会弹出确认警报,询问他们是否要在此处添加标记。如果他们说是,则添加标记。代码如下;

编辑:JSFiddle 上的标准 JS 工作版本:http: //jsfiddle.net/sT8xU/4/

google.maps.event.addListener(map, 'click', function (event) {
   if (event.latLng) {
      var answer = confirm("Add marker?");
         if (answer) {
               addMarker(map, event.latLng);
         }
   }
});

这工作正常。我现在尝试将此标准警报转换为 JQuery 对话框,如下所示;但无法让它工作。我想要的是使用上述 JQuery UI 对话框中的地图和事件参数调用 addMarker 函数。

试图让这个工作在 JSFiddle http://jsfiddle.net/sT8xU/5/

google.maps.event.addListener(map, 'click', function (event) {
   if (event.latLng) {
     $('#divConfirmDialog').html('Add marker?'); $('#divConfirmDialog').dialog('open');
     function showResultsTest(x) {
        addMarker(map, event.latLng);
        alert(x);
     }
   }
});

$('#divConfirmDialog').dialog({
   buttons: {
   "Add": function () {
     x = "1";
     $(this).dialog("close");
     showResultsTest(x);
   },
   "Don't add": function () {
     $(this).dialog("close");
    }
   }
});

谢谢

4

1 回答 1

2

给你:http: //jsfiddle.net/sT8xU/9/

我在你的varvar eventlatLng;全局声明下添加了。map然后我在google.maps.event.addListener函数中设置它。然后addMarker(map, eventlatLng);Add Marker按钮函数中调用。

var map;
var eventlatLng; //new var

$(document).ready(function() {
    //no changes in document.ready
});

google.maps.event.addListener(map, 'click', function(event) {
    if (event.latLng) {
        eventlatLng = event.latLng; // new var set here
        $('#divConfirmDialog').html('Add marker?');
        $('#divConfirmDialog').dialog('open');
    }
});

$('#divConfirmDialog').dialog({
    dialogClass: 'dialogShadow',
    resizable: false,
    height: 100,
    autoOpen: false,
    modal: true,
    buttons: {
        "Add Marker?": function() {
            addMarker(map, eventlatLng); //added call to function with new var
            $(this).dialog("close");
        },
        "Don't Add": function() {
           $(this).dialog("close");
        }
    }
});
// rest of code unchanged
于 2011-08-15T23:38:42.340 回答