2013-12-17 3 views
1

Im с использованием пользовательских элементов управления с google maps api v3. Поиск по всему Интернету и чтение документов для Api v3.Карты Google: использование пользовательских кнопок

Но я застрял в кнопке, чтобы при щелчке не разблокировался. Это кнопка, которую я нажимаю.

google.maps.event.addDomListener(controlUI, 'click', function() {        
    drawingManager.setDrawingMode(google.maps.drawing.OverlayType.POLYGON); 
}); 

Но когда я нажимаю на другую пользовательскую кнопку, она по-прежнему активна на предыдущей кнопке.

google.maps.event.addDomListener(controlUI, 'click', function() { 
    map.setOptions({draggable: true}); 
}); 

Я хочу, чтобы, когда кто-то щелкает, чтобы сделать многоугольник, и после того, как он нажмет на dragable, что кнопка многоугольник является unclicked и функция сбрасывается, как таким образом, что оно unclicked и когда пользователь нажимает кнопку снова функция снова активируется.

Я надеюсь, что я объяснил это, чтобы вы поняли мою проблему.


Обновленная информация (потому что не делает второй вопрос) .
Я не могу найти настройки управления событиями redo и undo на картах Google.
Элементы управления, которые должны быть установлены здесь.

google.maps.event.addDomListener(controlUI, 'click', function() { 
    //something like CTRL + z (on windows) redo or undo of the user steps (while drawing a polygon) 
}); 
+0

Вы хотите выйти из режима рисования, когда вы нажмете на вторую кнопку? Если это так, вам нужно использовать 'drawingManager.setDrawingMode (null);' во втором обработчике событий. –

+0

Да! Я добавил это к одному из моих обработчиков, и он отлично работает! Но как использовать его для одной кнопки? Поэтому, когда вы нажимаете сначала, вы можете нарисовать многоугольник byut, когда вы снова нажмете тот же значок, вы получите 'drawingManager.setDrawingMode (null);'? \ –

+0

Когда вы настраиваете обработчик событий, сохраните дескриптор. И когда активировано, удалите его. Что-то вроде этого: 'var handle = google.maps.event.addDomListener (controlUI, 'click', function() { google.maps.event.removeListener (handle); drawingManager.setDrawingMode (google.maps.drawing.OverlayType .POLYGON); google.maps.event.addDomListener (controUI, 'click', function() { map.setOptions ({draggable: true}); }); }); 'Поэтому вы немедленно меняете его на что-то другое. –

ответ

0

После некоторой помощи Анто Юрковича я пришел с решением, которое сработало для меня. Увидев решение, я почувствовал себя немного noobies, но вот он.

мне нужно использовать новой переменной и заявление true и false.

var drawPoly = false; 
google.maps.event.addDomListener(controlUI, 'click', function() { 
    if(drawPoly == false){ 
     drawingManager.setDrawingMode(google.maps.drawing.OverlayType.POLYGON); 
     drawPoly = true; 
    }else{ 
     drawingManager.setDrawingMode(null); 
     drawPoly = false; 
    } 
}); 
Смежные вопросы