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 🙏

© 2024 – Pkg Stats / Ryan Hefner

custom-google-map

v2.2.1

Published

A google map api based module that uses a custom theme and markers with info windows.

Downloads

3

Readme

Overview

A series of classes that make customization of a Google Maps API map simple and straightforward.

What you need to implement this package

  • A main.js file that imports MapApplication and Marker
  • A config.js file that contains a Google Maps API key
  • JSON data source (optional)

Map Marker Features

Create a config.js file in your project that contains a list of "features" objects to be passed to the MapApplication.js file in the package. LoadFeatures and LoadFeatureData will be called from main to populate these objects with data and the loadMarkers function will generate the object markers on the map based on these objects.

Config should contain a const MapInit array that has multiple functions that fetch the json data and copies it to the "cache" Array at a designated index. This array and all of its functions are passed through main to MapApplication. The MapInit should look similar to the following:

const mapinit = [
  function() {
      cache["data1"] = fetch("WEB API URL HERE").then(resp => {
        return resp.json();
      });
    },
      function() {
      cache["data2"] = fetch("WEB API URL HERE").then(resp => {
        return resp.json();
      });
    },
];

Each feature object must contain a Data array and a datasource property that takes in a function designed by the user to pass the data from the Cache to the data array on the individual object. This function looks similar to the following:

function populateData()
{ 
  $example= cache["data1"];

  $objects = $example.then(examples => {
    return examples.map(example => {
      let newObject = new Object(example);
      return newObject;
    });
  });
  return $objects;
};

A feature object looks similar to the following:

const features = {
  object: {
    name: "objectName",
    label: "objectLabel",
    markerLabel: "O",
    data: [],
    markerStyle:
      "/markers/Example-Marker.png",
    datasource: populateData,
  },
  }

Example Main.js

import MapApplication from './node_modules/custom-google-map/MapApplication.js';
import Marker from './node_modules/custom-google-map/markers/Marker';


// Instantiate the app and pass in the Config
const myMap = new MapApplication(config);

// Render the map to the page

// mapinit is the array of data functions contained in config.js
let init = myMap.init(mapinit).then(function () {

  //console.log("map loaded");

  // Set up the features and load in the data

  myMap.loadFeatures(features);
  myMap.loadFeatureData();

});
export default myMap;