PolygonWidget
by Paweł Niemczyk
HTML
<button id="test">test</button><button id="test1">test</button>
<div id="map" style="width:500px; height:500px"></div>
https://maps.gstatic.com/mapfiles/drawing.png
CoffeeScript
window.log = (msg) -> console.log msg
class window.PolygonWidget
dependency: -> window.location.protocol + "//maps.googleapis.com/maps/api/js?sensor=false&extension=.js&libraries=drawing&callback=window.PolygonWidget.InitializeMaps"
@currentInstance: null
shape: null
currentShape: null
@_buttonsDisabled: []
@_showButtons: false
@InitializeMaps: -> window.PolygonWidget.currentInstance.initMap() if window.PolygonWidget.currentInstance
constructor: (@mapId, @mapOpts={}) ->
window.PolygonWidget.currentInstance = @
@mapReadyHandler = @mapOpts.mapReadyHandler
@shape = @mapOpts.shape
delete @mapOpts.mapReadyHandler
delete @mapOpts.shape
if @mapOpts.UI
@_registerbuttonsHandlers(@mapOpts.UI.buttonsHandlers)
@_showUIButtons = @mapOpts.UI.showButtons
@_buttonsDisabled = @mapOpts.UI.buttonsDisabled
delete @mapOpts.UI.showButtons
delete @mapOpts.UI.buttonsHandlers
delete @mapOpts.UI.buttonsDisabled
@_loadDependencies()
initMap: ->
drawingMode = @_drawingMode(@mapOpts.drawingMode)
@shapeChangeHandler = @mapOpts.shapeChangeHandler
delete @mapOpts.drawingMode
delete @mapOpts.shapeChangeHandler
@mapOpts.center = @_prepareCenter(@mapOpts.center)
@_map = new google.maps.Map(document.getElementById(@mapId), @mapOpts)
@_initDrawingManager(drawingMode)
@_registerEvents()
@_drawShape() if @shape
@_initCustomControlsOnMap() if @_showUIButtons
@mapReadyHandler() if @mapReadyHandler && typeof @mapReadyHandler is 'function'
setDrawingMode: (name)->
@drawingManager.setDrawingMode(@_drawingMode(name))
@drawingManager.setMap(@_map)
getDrawingMode: -> @drawingManager.getDrawingMode()
clearShape: -> @_deleteSelected()
getMap: -> @_map
getCurrentShapeProperties: ->
type = @currentShape.type
shape = @currentShape
switch type
when google.maps.drawing.OverlayType.CIRCLE
center = shape.getcenter()
radiusM =...