npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@taitrd/gmap

v1.0.6

Published

google map plugins

Readme

Google Map Drawing plugins

Google Map script with drawing library and basic following functions:

  • Custom UI and css
  • No jQuery
  • Support drawing shapes and exporting coordinates

Some sample pictures:

Requirements

  • Google Map API Javascript: include drawing library.
  • Font Awesome > 4 for icons

Definitions

  • Options: Gmap drawer options on html head with object variable gmapDrawerOptions includes following options.

    • visible: visible map at beginning.
      • type: boolean, default: true
    • enableSelection: enable selection when clicking on elements.
      • type: boolean, default value: true
    • drawingButtons: configure control buttons and visible drawing modes.
      • type: object array, default config
    • drawingToolOptions: override drawing tool options.
  • Events

    • feature_selected
    • shape_selected
    • polygon_selected
    • marker_selected
    • polygon_completed
    • arrow_completed
    • marker_completed
    • draw_items_change
    • on_delete_item
    • on_save_selection
  • Methods

    • addControls(controls-element): add map controls from DOM element
    • attachEvent(name, callback): listen events
    • listenEvent(name, callback): listen events
    • clearMap(): clear selection, controls, geo layers and reset default configuration
    • clearSelection(): clear selections both google elements and geo layers
    • deleteSelectedShape(): clear selected shape/geo layer
    • rotateSelectedMarker(degree): rotate marker/point (geo layer)
    • loadGeoJson(geo-json-format, autoDraw): load geo layers
    • initialize(): creating drawer tool
    • setMap(google-map-instance): set map instance
    • setEditMode(boolean): set edit mode flag state
    • setOption(string, boolean): set tool's single option (check option description above)
      • visible key: set visible flag value for logics and show/hide tool and elements
      • enableSelection key: set selection flag for logics (prevent selection) and clear selection if false value
    • setGeoOption(string, boolean): set geo layer option
      • visibleArrows key: set visible value (boolean) to show/hide point arrows

Browser guide

Include this to link stylesheet and script

<!-- head -->
<link rel="stylesheet" href="path/to/library/@taitrd/gmap/css/gmap.css" />
<!-- body -->
<script src="https://maps.google.com/maps/api/js?key=<your-key>&libraries=places,drawing"></script>
<script src="path/to/library/@taitrd/gmap/js/gmap.js">

Yii1 client script guide

Set path of alias npm in main.php to npm assets directory.

Yii::setPathOfAlias('npm', dirname(__FILE__) . '/../../node_modules');

add this package to CClientScript component configuration.

 /** @var CClientScript $cs */
$cs = Yii::app()->getClientScript();
$cs->addPackage('gmap', array(
    'basePath' => '[email protected]',
    'js'=>array('js/gmap.js'),
    'css'=>array('css/gmap.css'),
    'depends' => array(),
));

$drawingButtons = json_encode(array(
    array('name' => 'drawAShape', 'label' => Yii::t('main', 'Draw polygon')),
    array('name' => 'drawAnArrow', 'label' => Yii::t('SchlagModule.main', 'Draw an arrow')),
));
$cs->registerScript('gmapDrawerOptions', <<<JAVASCRIPT
 var gmapDrawerOptions = {
    drawingButtons: {$drawingButtons},
}
JAVASCRIPT, CClientScript::POS_HEAD);
// include package for usage
$cs->registerPackage('gmap');

Usage

Notes: Include this script to your script and change it to fit your environment.

var gmapDrawerOptions = {
    drawingButtons: [
      {name: 'drawAShap', label: 'Draw a polygon'},
    ],
}
<div class="gmap-drawer show-drawing-control-label">
  <div id="map"></div>
</div>

Bind your events of buttons with jquery or something with javascript.

this.btnDeletePolygon.on('click', function(e) {
    gmapDrawer.deleteSelectedShape();
})
this.btnCancelSelection.on('click', function(e) {
    gmapDrawer.clearSelection();
})
<script>
  // Set existing map instance
  if (typeof gmapDrawer !== "undefined") {
    gmapDrawer.setMap(map);
  }

  // Initialize drawer
  gmapDrawer.initialize();
  // Bind event to your function
  gmapDrawer.listenEvent("shape_selected", (data) => {});

  const json = {
    type: "FeatureCollection",
    features: [
      {
        type: "Feature",
        properties: {
          id: 1,
        },
        geometry: {
          type: "Polygon",
          coordinates: [
            [
              {
                lat: 51.24713447076167,
                lng: 13.046661619128418,
              },
              {
                lat: 51.241277877758016,
                lng: 13.055158857287598,
              },
              {
                lat: 51.241116676579914,
                lng: 13.03636193651123,
              },
              {
                lat: 51.24536145250726,
                lng: 13.044515851916504,
              },
              {
                lat: 51.24713447076167,
                lng: 13.046661619128418,
              },
            ].map((i) => [i.lng, i.lat]),
          ],
        },
      },
      {
        type: "Feature",
        properties: {
          id: 2,
        },
        geometry: {
          type: "Polygon",
          coordinates: [
            [
              {
                lat: 51.25223823260805,
                lng: 13.054386381091309,
              },
              {
                lat: 51.25116380350319,
                lng: 13.056017164172363,
              },
              {
                lat: 51.2499281789958,
                lng: 13.055416349353028,
              },
              {
                lat: 51.250411688191974,
                lng: 13.053785566271973,
              },
              {
                lat: 51.25111008138892,
                lng: 13.053184751452637,
              },
              {
                lat: 51.25223823260805,
                lng: 13.054386381091309,
              },
            ].map((i) => [i.lng, i.lat]),
          ],
        },
      },
    ],
  };
  gmapDrawer.loadGeoJson(json, true);

  // Empty data and remove drawer from map

  gmapDrawer.clearMap();
</script>

Change logs

  • 2023-03-25 1.0.6

    • Add options drawingButtonsSize may be sm, md
    • Updated buttons title from options
    • Fixed event for creating button elements from template case.
  • 2023-03-11 1.0.5

    • Updated visible and optional additions options for GEO features
    • Update styles: added .gmap-hidden class for hiding another elements on edit mode (.editMode class), addition .gmap-controls class for bootstrap button styles
    • Added setGeoOption function for updating feature styles
    • Updated google marker functions: resetArrowIconMarker
  • 2022-10-10 1.0.4

    • Fix bugs and styles.
    • Add arrow color picker
    • Integrate create and remove events: arrow, polygon.
    • Handle map element's data.
    • Relocate structure, prototypes
  • 2022-10-05 1.0.3

    • Handling options, drawing options, modes, open methods
    • Arrow marker & data layer feature: highlight arrow marker, draggable, rotation
    • Add bootstrap icons library: css, buttons, fontawesome
    • Update selection, controls element, confirmation to delete item
    • Relocate structure, prototypes
  • 2022-09-12 1.0.2

    • Open/Close principle.
    • Describe functions.
  • 2022-09-11 1.0.1

    • Create specific private events
    • Update button control styles
  • 2022-09-10 1.0.0

    • Initialize package