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

@mappingfactory/sdk-angular

v1.0.1

Published

Angular SDK for Michelin's Navigation and Mapping Services.

Downloads

2

Readme

@mappingfactory/sdk-angular

This library provides a set of Angular services for working with the @mappingfactory/sdk-js. Those services are designed to be easy to use and provide a simple interface for common tasks such as searching for locations, getting directions, displaying and interacting with a map, and displaying a roadsheet.

Installation

You can install the library using your preferred package manager:

npm install @mappingfactory/sdk-angular
yarn add @mappingfactory/sdk-angular

Usage

To use the MappingFactory SDK in your Angular project, you first need to initialize the SDK using the MFCoreService. This service provides a method for initializing the SDK with your API key and other configuration options.

import { Component, OnInit, inject } from "@angular/core";
import { MFCoreService } from "@mappingfactory/sdk-angular";

@Component({
  // ...
})
export class AppComponent implements OnInit {
  mfCoreService: MFCoreService = inject(MFCoreService);

  constructor() {}

  ngOnInit(): void {
    // We initialize the SDK here
    this.mfCoreService.init({
      apiKey: "YOUR_API_KEY",
    });
  }
}

Once the SDK is initialized, you can use the other services provided by the SDK to perform various tasks related to mapping and location-based services. Here are some examples:

Direction Service

The MFDirectionService provides methods for calculating directions between two points.

import { MFDirectionService } from "@mappingfactory/sdk-angular";

@Injectable()
export class MyService {
  directionService: MFDirectionService = inject(MFDirectionService);

  constructor() {
    this.directionService.init({ geometries: "geojson" });
  }

  async exampleSearch(): Promise<void> {
    const direction = this.directionService.getInstance();

    direction.client.setCoordinates(
      { latitude: 48.8584, longitude: 2.2945 },
      { latitude: 43.2964, longitude: 5.37 }
    );
    const results = await direction.search();

    return results
  }
}

MapLibre Service

The MFMapLibreService provides a wrapper around the MapLibre GL library.

import { OnInit, Component, ElementRef, ViewChild } from "@angular/core";
import { MFMapLibreService } from "@mappingfactory/sdk-angular";

@Component({
  // ...
})
export class MyComponent implements OnInit {
  directionService: MFDirectionService = inject(MFDirectionService);
  mapLibreService: MFMapLibreService = inject(MFMapLibreService);

  @ViewChild("mapElement", { static: true }) mapElement!: ElementRef;

  constructor() {
    this.directionService.init({ geometries: "geojson" });
    this.mapLibreService.init();
  }

  ngOnInit(): void {
    const direction = this.directionService.getInstance();
    const wrapper = this.mapLibreService.getInstance();
    const maplibre = wrapper._client;

    const map = new maplibre.Map({
      container: this.mapElement.nativeElement,
      style: "https://demotiles.maplibre.org/style.json",
      center: [2.3522, 48.8566], // Paris
      zoom: 5,
    });

    // The `setMap` method saves a reference of the map and creates a new layer
    // for the route and start point.
    direction.setMap(map);
  }
}

Search Service

The MFSearchService provides methods that can create autocompletes and use geocoding services.

import { MFSearchService } from "@mappingfactory/sdk-angular";
import { OnInit, Component, ElementRef, ViewChild } from "@angular/core";

@Component({
  // ...
})
export class MyComponent implements OnInit {
  searchService: MFSearchService = inject(MFSearchService);

  @ViewChild("autocomplete", { static: true }) autocompleteElement!: ElementRef;

  ngOnInit(): void {
    this.searchService.init();

    const search = this.searchService.getInstance();

    const autocomplete = await search.autocomplete(
      this.autocompleteElement.nativeElement,
      {
        language: "fr",
      }
    );

    autocomplete._on("selected", (value) => {
      console.log(value);
    });
  }
}

Roadsheet Service

The MFRoadsheetService provides methods for generating a "roadsheet" or list of directions for a given route.

import {
  MFRoadsheetService,
  MFDirectionService,
} from "@mappingfactory/sdk-angular";
import { OnInit, Component, ElementRef, ViewChild } from "@angular/core";

@Component({
  // ...
})
export class MyComponent implements OnInit {
  directionService: MFDirectionService = inject(MFDirectionService);
  roadsheetService: MFRoadsheetService = inject(MFRoadsheetService);

  async ngOnInit(): Promise<void> {
    this.directionService.init({ geometries: "geojson" });
    this.roadsheetService.init();

    this.createRoadsheet();
  }

  async createRoadsheet(): Promise<void> {
    const direction = this.directionService.getInstance().client;
    const roadsheet = this.roadsheetService.getInstance().client;

    const departure = { latitude: 48.8584, longitude: 2.2945 }; // Paris
    const arrival = { latitude: 43.2964, longitude: 5.37 }; // Marseille

    direction.client.setCoordinates(departure, arrival);

    const results = await direction.search();
    const route = results.routes[0];
    const waypoints = route.waypoints;

    const html = await roadsheet.client.getHtml(route, waypoints);

    console.log(html);
  }
}

These are just a few examples of the services provided by this Angular SDK. For more information on how to use the SDK, please refer to the documentation of the @mappingfactory/sdk-js package.

Components

MichelinMap

The MichelinMap component is a part of @mappingfactory/sdk-angular that simplifies the process of adding and interacting with a MapLibre map in your Angular application. This component utilizes the MFMapLibreService service to manage map-related functionalities.

Features
  • Easy integration of MapLibre maps.
  • Customizable map options.
  • Callback function (onMapInit) for further map customization after initialization.
Props

options: A set of options to configure the MapLibre instance (excluding the container property, which is handled by the component). onMapInit: An optional callback that is invoked with the map instance after the map is initialized and styles are loaded. This can be useful for adding layers, sources or even with the MFDirectionService service to add a route to the map.

Example Usage

Use the MichelinMap component where needed.

<michelin-map
  [options]="mapOptions"
  (onMapInit)="onMapInit($event)"
></michelin-map>
mapOptions = {
  style: "https://demotiles.maplibre.org/style.json",
  center: [2.3522, 48.8566], // Paris
  zoom: 5,
};

public onMapInit(map: Map): void {
  console.log('Map is ready:', map);

  // In this example, 'click' is an event of type MapEventType
  // provided by the MapLibre-GL library.
  // You can customize event handlers according to your specific needs.
  map.on('click', () => {
    console.log('map click');
  });
}

MichelinAutocomplete

The MichelinAutocomplete component is a part of @mappingfactory/sdk-angular designed to provide an easy-to-use interface for implementing autocomplete functionality in your Angular applications. This component utilizes the MFSearchService service to manage autocomplete functionalities related to location and address search.

Features
  • Autocomplete functionality for searching locations and addresses.
  • Customizable options for search behavior and appearance.
  • Callbacks for various autocomplete events like selection, opening, closing, searching, and more.
Props
  • options: Custom options to configure the autocomplete behavior and appearance.
  • onSelect: Callback fired when an item is selected from the autocomplete suggestions.
  • onDropdownOpen: Callback fired when the dropdown opens.
  • onDropDownClose: Callback fired when the dropdown closes.
  • onSearch: Callback fired when a search is initiated.
  • onNoResults: Callback fired when no results are found.
  • onError: Callback fired when there is an error in searching.
  • onSuccess: Callback fired when a search is successful.
  • onClear: Callback fired when the autocomplete input is cleared.
  • onInit: Callback fired when the autocomplete manager is initialized.
Example Usage

Use the MichelinAutocomplete component where needed.

<michelin-autocomplete
  [id]="'autocompleteId'"
  (onSelect)="onSelectResult($event)"
></michelin-autocomplete>
public onSelectResult(value): void {
  // do something with the selected value
}

You can customize it by passing different options and handling various events according to your application's needs.

Development Environment Setup

To run this project locally, navigate to the Project Directory and follow these steps:

Install Dependencies:

Use npm to install the project's dependencies, you'll need to install the dependencies inside the root directory, demo folder and the projects/mapping-factory-sdk-angular using the following command:

npm install

Build the Project for Development:

Now that the dependencies are installed, you can build the SDK using the following command:

npm run build

Note This command needs to be run in the root directory of the project.

This command will output a dist folder in the root directory. This folder contains the compiled SDK files that are ready to be published to NPM.

Run the demo for Development:

You'll need to pack the dist folder using the following command:

npm run pack

This will create a .tgz file that can be installed using npm inside the demo folder using the following command:

npm install ../mappingfactory-sdk-angular-1.0.0.tgz

Now that the dependencies are installed, you can build the SDK using the following command:

npm run start

Note This command needs to be run in the root directory of the project or the demo folder.

Apply my changes from the SDK inside the demo:

If you want to see your changes inside the demo, you'll need to build and pack the dist folder using the following command:

npm run pack

This will create a .tgz file that can be installed using npm inside the demo folder using the following command:

npm install ../mappingfactory-sdk-angular-1.0.0.tgz