0.6.2 • Published 7 years ago

leaflet-geotag-photo v0.6.2

Weekly downloads
126
License
MIT
Repository
github
Last release
7 years ago

Leaflet.GeotagPhoto

Leaflet plugin for photo geotagging.

Examples:

Screenshot of camera module

Leaflet.GeotagPhoto is part of The New York Public Library's NYC Space/Time Directory.

You can also find Leaflet.GeotagPhoto on Leaflet's plugin page.

Usage

Include the following HTML in your page's <head> tag:

<link rel="stylesheet" href="https://unpkg.com/leaflet-geotag-photo/dist/Leaflet.GeotagPhoto.css" />
<script src="https://unpkg.com/leaflet-geotag-photo/dist/Leaflet.GeotagPhoto.min.js"></script>

The HTML above links to the latest version of Leaflet.GeotagPhoto. In production, you should link to a specific version, to prevent newer versions breaking your application:

<link rel="stylesheet" href="https://unpkg.com/leaflet-geotag-photo@0.5.1/dist/Leaflet.GeotagPhoto.css" />
<script src="https://unpkg.com/leaflet-geotag-photo@0.5.1/dist/Leaflet.GeotagPhoto.min.js"></script>

Modes

L.GeotagPhoto.Crosshair

Crosshair mode

Example

L.geotagPhoto.crosshair().addTo(map)
  .on('input', function (event) {
    var point = this.getCrosshairPoint()
  })

API

L.GeotagPhoto.Crosshair extends L.Evented.

FunctionDescription
L.geotagPhoto.crosshair(options?)Creation
addTo (map)Add L.GeotagPhoto.Crosshair to map
removeFrom (map)Remove L.GeotagPhoto.Crosshair from map
getCrosshairLatLng ()Returns crosshair's LatLng
getCrosshairPoint ()Returns crosshair's GeoJSON Point

Options

OptionTypeDefaultDescription
crosshairHTMLHTML String<img src="../images/crosshair.svg" width="100px" />HTML string of crosshair element

L.GeotagPhoto.Camera

Camera mode

Example

var cameraPoint = [6.83442, 52.43369]
var targetPoint = [6.83342, 52.43469]

var points = {
  type: 'Feature',
  properties: {
    angle: 20
  },
  geometry: {
    type: 'GeometryCollection',
    geometries: [
      {
        type: 'Point',
        coordinates: cameraPoint
      },
      {
        type: 'Point',
        coordinates: targetPoint
      }
    ]
  }
}

var options = {
  draggable: true
}

L.geotagPhoto.camera(points, options).addTo(map)
  .on('change', function (event) {
    // Get camera field of view
    // See:
    //   https://github.com/nypl-spacetime/field-of-view#output
    var fieldOfView = this.getFieldOfView()
  })

API

L.GeotagPhoto.Camera extends L.FeatureGroup.

FunctionDescription
L.geotagPhoto.camera(feature, options?)Creation, feature is input for field-of-view
getFieldOfView ()Returns field of view of camera
getCameraLatLng ()Returns camera's LatLng
getTargetLatLng ()Returns target's LatLng
getCameraPoint ()Returns camera's GeoJSON Point
getTargetPoint ()Returns target's GeoJSON Point
getCenter ()Returns LatLng of point halfway camera and target
getBounds ()Returns LatLngBounds of field of view triangle
centerBounds (bounds)Moves camera and target so their center lies in the middle of bounds
setAngle (angle)Set angle of view
setCameraLatLng (latLng)Set LatLng of camera
setTargetLatLng (latLng)Set LatLng of target
setCameraAndTargetLatLng (cameraLatLng, targetLatLng)Set LatLng of camera and LatLng of target
setDraggable (boolean)Toggle between static or draggable camera

Options

OptionTypeDefaultDescription
draggableBooleantrueWhether the camera is draggable with mouse/touch or not
angleMarkerBooleantrueWhether the angle of the field-of-view can be changed with a draggable marker
minAngleNumber5Minimum angle of field-of-view
maxAngleNumber120Maximum angle of field-of-view
cameraIconL.IconSee belowCamera icon
targetIconL.IconSee belowTarget icon
angleIconL.IconSee belowAngle icon
outlineStyleL.Path optionsSee belowStyle of field-of-view triangle's outline
fillStyleL.Path optionsSee belowStyle of field-of-view triangle's fill polygon
controlBooleantrueWhether to show camera control buttons
controlCameraImgString../images/camera-icon.svgURL to icon displayed in camera control button
controlCrosshairImgString../images/crosshair-icon.svgURL to icon displayed in crosshair control button
Defaults
const defaults = {
  cameraIcon: L.icon({
    iconUrl: '../images/camera.svg',
    iconSize: [38, 38],
    iconAnchor: [19, 19]
  }),

  targetIcon: L.icon({
    iconUrl: '../images/marker.svg',
    iconSize: [32, 32],
    iconAnchor: [16, 16]
  }),

  angleIcon: L.icon({
    iconUrl: '../images/marker.svg',
    iconSize: [32, 32],
    iconAnchor: [16, 16]
  }),

  outlineStyle: {
    color: 'black',
    opacity: 0.5,
    weight: 2,
    dashArray: '5, 7',
    lineCap: 'round',
    lineJoin: 'round'
  },

  fillStyle: {
    weight: 0,
    fillOpacity: 0.2,
    fillColor: '#3388ff'
  }
}

Keyboard navigation

  • Use tab to switch between map, camera and target
    • Use arrow keys to move map, camera or target
  • Press C to move camera to center of current map view
  • Press M to center map on current camera position

Building & Publishing

To build the plugin, run:

npm run build

The resulting files will be available in the dist directory.

To publish the plugin to npm and unpkg.com, run:

npm publish

See also

0.6.2

7 years ago

0.6.1

7 years ago

0.6.0

7 years ago

0.5.1

7 years ago

0.5.0

7 years ago

0.4.1

7 years ago

0.4.0

7 years ago

0.3.7

7 years ago

0.3.6

7 years ago

0.3.5

7 years ago

0.3.4

7 years ago

0.3.3

7 years ago

0.3.2

7 years ago

0.3.1

7 years ago

0.3.0

7 years ago

0.2.0

7 years ago

0.1.3

7 years ago

0.1.1

7 years ago

0.1.0

7 years ago