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 =...