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

@nativescript/google-maps

v1.7.1

Published

Google Maps SDK

Downloads

1,914

Readme

@nativescript/google-maps

A plugin that allows you to use the Maps SDK to access Google Maps features.

Contents

Prerequisites

  1. To use the Google Maps API, register your app in the Google API Console and obtain an API key.

  2. Add the Google Maps API key to your app.

Android

To add the API key for Android, modify the AndroidManifest.xml file and add the <meta-data> tag with the com.google.android.geo.API_KEY as its name and the key as the value.

<application
  android:name="com.tns.NativeScriptApplication"
  android:allowBackup="true"
  android:icon="@mipmap/ic_launcher"
  android:label="@string/app_name"
  android:theme="@style/AppTheme"
  android:hardwareAccelerated="true">

  <meta-data
    android:name="com.google.android.geo.API_KEY"
    android:value="yourKey"/>
</application>

iOS

To add the API key for iOS, add the TNSGoogleMapsAPIKey key and the API key as the value to the Info.plist file, located at App_Resources/iOS.

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
  <dict>
    <key>TNSGoogleMapsAPIKey</key>
    <string>yourKey</string>
  </dict>
</plist>

Installation

npm install @nativescript/google-maps

To use the plugin in the different NativeScript flavors, modify the main.ts to import and then register it.

Use @nativescript/google-maps with core

  1. Register the plugin namespace with Page's xmlns attribute providing your prefix( map, for example).
<Page xmlns="http://schemas.nativescript.org/tns.xsd"
  xmlns:map="@nativescript/google-maps">
  1. Access the <MapView> using the the map prefix.
<map:MapView ...

Below is the complete code from the 2 preceding steps:

<Page xmlns="http://schemas.nativescript.org/tns.xsd"
  xmlns:map="@nativescript/google-maps">
	<map:MapView
		lat="{{lat}}"
		lng="{{lng}}"
		zoom="{{zoom}}"
		bearing="{{bearing}}"
		tilt="{{tilt}}"
		mapTap="{{onTap}}"
		mapLongPress="{{onLongPress}}"
		markerTap="{{onMarkerTap}}"
	/>
</Page>
  1. To manage the mapping features, listen to the map view's ready event and get the reference to the GoogleMap instance from the event data.
<Page xmlns="http://schemas.nativescript.org/tns.xsd"
  xmlns:map="@nativescript/google-maps">
	<map:MapView
		lat="{{lat}}"
		lng="{{lng}}"
		zoom="{{zoom}}"
		bearing="{{bearing}}"
		tilt="{{tilt}}"

		ready="{{onReady}}" 👈

		mapTap="{{onTap}}"
		mapLongPress="{{onLongPress}}"
		markerTap="{{onMarkerTap}}"
	/>
</Page>

To use the plugin in the different NativeScript flavors, modify the main.ts to register it.

Use @nativescript/google-maps with Angular

  1. Register the plugin by adding the GoogleMapsModule to the imports array of the AppModule, in app.module.ts as follows:
import { GoogleMapsModule } from '@nativescript/google-maps/angular';

// Registering
@NgModule({
    imports: [
      GoogleMapsModule
    ],
    declarations: [
      AppComponent
    ],
    bootstrap: [AppComponent]
})
  1. Add MapView to your markup.
<MapView
	(mapTap)="onTap($event)"
	(mapLongPress)="onLongPress($event)"
	(markerTap)="onMarkerTap($event)"
>
</MapView>
  1. Manage
<MapView
	(ready)="onReady($event)" 
	(mapTap)="onTap($event)"
	(mapLongPress)="onLongPress($event)"
	(markerTap)="onMarkerTap($event)"
>
</MapView>
  1. To manage the mapping features, listen to the map view's ready event and get the reference to the GoogleMap instance from the event data.

Use @nativescript/google-maps with Vue

  1. In the app.ts file, register the plugin by passing its reference to the use() method to the app instance.

Vue

import { createApp,registerElement } from 'nativescript-vue';
import GoogleMaps from '@nativescript/google-maps/vue'

import Home from './components/Home.vue';

const app = createApp(Home)
app.use(GoogleMaps)

Note To handle the map features, see the GoogleMap object API.


  1. Add the MapView component to the markup.
<MapView
	@ready="onReady"
	@mapTap="onTap"
	@mapLongPress="onLongPress"
	@markerTap="onMarkerTap"

/>

Note To handle the map features, see the GoogleMap object API.

  1. To manage the mapping features, listen to the map view's ready event and get the reference to the GoogleMap instance from the event data.

Control the camera

To programmatically update the camera position, call the animateCamera() method on the GoogleMap object and pass it a CameraUpdate instance.

import { CameraUpdate } from '@nativescript/google-maps';

googleMap.animateCamera(
	CameraUpdate.fromCoordinate({
			lat: -32.1234,
			lng: 125.1234
		},
		googleMap.cameraPosition.zoom
	)
);

Set the map type

To set the map type, set the mapType property to one of the MapType options.

import { GoogleMap, MapType } from '@nativescript/google-maps';

map: GoogleMap;
map.mapType = MapType.Hybrid;

See CameraUpdate for more methods you can call and pass to the animateCamera() method.

Styling the map

You can style the map's items, such as roads, parks, businesses, and other points of interest.

Styling works only on the normal map type. Styling does not affect indoor maps.

To style your map, use a JSON file generated by the Google Maps APIs Styling Wizard. In addition to changing the appearance of features, you can also hide features completely.

[
  {
    "featureType": "all",
    "stylers": [
      { "color": "#C0C0C0" }
    ]
  },{
    "featureType": "road.arterial",
    "elementType": "geometry",
    "stylers": [
      { "color": "#CCFFFF" }
    ]
  },{
    "featureType": "landscape",
    "elementType": "labels",
    "stylers": [
      { "visibility": "off" }
    ]
  }
]

To apply a custom style to your map you can set the mapStyle property on your GoogleMap object:

import { GoogleMap } from '@nativescript/google-maps';

map: GoogleMap;
map.mapStyle = [{
	"featureType": "landscape",
	"elementType": "labels",
	"stylers": [
		{ "visibility": "off" }
	]
}];

API

MapView Class

Properties

The following properties are available for adjusting the camera view on initialization:

| Property | Type | Description :------------- |:-----| :--------------------------------- lat | number | Latitude, in degrees lng | number | Longitude, in degrees zoom | number | Zoom level (described here) bearing | number | Bearing, in degrees tilt | number | Tilt, in degrees

Events

MapView provides the following events:

| Event | Description :------------- | :--------------------------------- ready | Fires when the MapView is ready for use and provides a GoogleMap instance for managing mapping featurees. mapTap | Fires when a coordinate is tapped on the map mapLongPress | Fires when a coordinate is long-pressed on the map markerTap | Fires when a marker is tapped myLocationTap | Fires when 'My Location' is tapped myLocationButtonTap | Fires when the 'My Location' button is tapped markerDragStart | Fires when a marker begins dragging markerDragging | Fires while a marker is being dragged markerDragEnd | Fires when a marker ends dragging tileRenderingStart | Fires when tile rendering begins tileRenderingEnd | Fires when tile rendering ends cameraPosition | Fires when the map viewport state changes, camera states include idle | start | moving circle | Fires when a circle is tapped polygon | Fires when a polygon is tapped polyline | Fires when a polyline is tapped poi | Fires when a POI is tapped groundOverlay | Fires when a ground overlay is tapped infoWindowTap | Fires when a marker's info window is tapped infoWindowLongPress | Fires when a marker's info window is long-pressed infoWindowClose | Fires when a marker's info window is closed markerInfoContents | If this method returns a view, it will be placed within the default info window frame. markerInfoWindow | Called when a marker is about to become selected, and provides an optional custom info window to use for that marker if this method returns a view. activeBuilding | Fires when a building is focused on activeLevel | Fires when the level of the focused building changes

GoogleMap Object

This class provides the mapping features and its instance is available from the MapView instance's ready event:

function onReady(event: MapReadyEvent) {
	const map: GoogleMap = event.map;
}

Properties

| Property | Type |Description :--------------- |:-----|:--------------------------------- buildingsEnabled | boolean | Enables Buildings maxZoomLevel | number | Maximum level of zoom minZoomLevel | number | Minimum level of zoom myLocationEnabled | boolean | Enables "My Location" trafficEnabled | boolean | Enables traffic cameraPosition | CameraPosition | See Camera Position projection | Projection | See Projection uiSettings | IUISettings | See UISettings Interface mapStyle | Style[] | See Map Styles mapType | MapType | See MapType native | any | readonly: Platform-specific instance of the GoogleMap class. com.google.android.gms.maps.GoogleMap for Android and GMSMapView for iOS.

Methods

| Method | Returns |Description :--------------- |:------------- |:--------------------------------- addMarker(marker: MarkerOptions)| Marker |Adds a marker to the map removeMarker(marker: Marker)| void | Removes a marker from the map addTileOverlay(options: TileOverlayOptions)| TileOverlay | Adds a tile overlay to the map removeTileOverlay(overlay: TileOverlay)| void | Removes a tile overlay from the map addCircle(circle: CircleOptions)| Circle | Adds a circle to the map removeCircle(circle: Circle)| void | Removes a circle from the map addGroundOverlay(options: GroundOverlayOptions) | GroundOverlay | Adds a ground overlay to the map removeGroundOverlay(groundOverlay: GroundOverlay) | Removes a ground overlay from the map addPolygon(options: PolygonOptions) | Polygon | Adds a polygon to the map removePolygon(polygon: Polygon) | Removes a polygon from the map addPolyline(options: PolylineOptions) | Polyline | Adds a polyline to the map removePolyline(polyline: Polyline)| void | Removes a polyline from the map animateCamera(update: CameraUpdate)| void | Animates camera to a new position snapshot()| Promise<ImageSource> | Returns a platform-specific image of the map's current viewport clear()| void | Clears all objects added to the map

Native Map Object

GoogleMap gives you access to the platforms native map objects native | android | ios

consult the appropriate SDK reference on how to use it: iOS | Android

Camera Position

The map's current camera position can be read from the cameraPosition property of a GoogleMap object.

| Property | Type | Description :--------------- |:---- |:--------------------------------- target | Coordinate | The camera target is the location of the center of the map, specified as lat and lng. bearing | number | The direction in which the camera points measured in degrees clockwise from north. tilt | number | The viewing angle of the camera measured in degrees zoom | number | The scale of the map

CameraUpdate Class

CameraUpdate provides multiple methods to create a target CameraPosition.

| Method | Description |:-------|:----------- | fromCoordinate(coordinate: Coordinate, zoom: number) | Returns a CameraUpdate from a single coordinate | fromCoordinates(coordinates: Coordinate[], padding: number) | Returns a CameraUpdate from multiple coordinates | fromCoordinates(coordinates: Coordinate[], width: number, height: number, padding: number) | Returns a CameraUpdate from multiple coordinates with specified height, width and padding | fromCameraPosition(position: CameraPosition) | Returns a CameraUpdate from a CameraPosition | zoomIn() | Returns a CameraUpdate that has zoomed in | zoomOut() | Returns a CameraUpdate that has zoomed out | zoomTo(value: number) | Returns a CameraUpdate that has zoomed to a value | zoomBy(amount: number, point?: { x: number; y: number }) | Returns a CameraUpdate that has zoomed and panned | scrollBy(x: number, y: number) | Returns a panned CameraUpdate

Projection

A projection is used to translate between on screen location and geographic coordinates on the surface of the Earth.

| Method | Description |:-------|:----------- | fromScreenLocation(point: { x: number; y: number }) | Returns the geographic location that corresponds to a screen location. | getVisibleRegion() | Gets a projection of the viewing frustum for converting between screen coordinates and geo-latitude/longitude coordinates. | toScreenLocation(coordinate: Coordinate) | Returns a screen location that corresponds to a geographical coordinate. | containsCoordinate(coordinate: Coordinate) | Returns true if the coordinate is visible in the current viewport.

UISettings Interface

You can adjust the maps UI settings from the GoogleMap object by configuring the following properties of the uiSettings property:

| Property | Type | Description |:-------------- |:-----|:--------------------------------- | compassEnabled | boolean | Whether the compass is enabled or not | indoorLevelPickerEnabled | boolean | Whether the indoor level picker is enabled or not | mapToolbarEnabled | boolean | Whether the map toolbar is enabled or not | myLocationButtonEnabled | boolean | Whether the 'My Location' button is enabled or not | rotateGesturesEnabled | boolean | Whether the compass is enabled or not | scrollGesturesEnabled | boolean | Whether map scroll gestures are enabled or not | tiltGesturesEnabled | boolean | Whether map tilt gestures are enabled or not | zoomGesturesEnabled | boolean | Whether map zoom gestures are enabled or not | zoomControlsEnabled | boolean | Whether map zoom controls are enabled or not | scrollGesturesEnabledDuringRotateOrZoom | boolean | Whether scroll gestures are enabled while rotating or zooming

MapType enum

The Google Maps API offers the following five types of maps:

| Type | Description :------|:----------- | None | No tiles. The map is rendered as an empty grid with no tiles loaded. | Normal | Typical road map. Shows roads, some features built by humans, and important natural features such as rivers. Road and feature labels are also visible. | Satellite | Satellite photograph data. Road and feature labels are not visible. | Terrain | Topographic data. The map includes colors, contour lines and labels, and perspective shading. Some roads and labels are also visible. | Hybrid | Satellite photograph data with road maps added. Road and feature labels are also visible.

Markers

Adding Markers

You can create markers using the GoogleMap's object addMarker method by passing it a MarkerOptions object.

function addMarker(map: GoogleMap, markerOptions: MarkerOptions): Marker {
	return map.addMarker(markerOptions);
}

addMarker returns a Marker

Marker Object

It implements the [MarkerOptions] interface and has the following additional methods.

| Method | Returns |:-------|:------- | hideInfoWindow()| void | showInfoWindow()| void

MarkerOptions

| Property | Type | Description |:---------|:-----|:----------- | position | Coordinate | The position of the marker, specified as lat and lng | color | string | Color | Color of the marker, shades are unavailable. | opacity | number | Opacity of the marker. | title | string | A string that's displayed in the info window when the user taps the marker | snippet | string | Additional text that's displayed below the title | icon | ImageSource \| UIImage \| Bitmap | A image that's displayed in place of the default marker image | draggable | boolean | Set to true if you want to allow the user to move the marker. Defaults to false | flat | boolean | By default, markers are oriented against the screen, and will not rotate or tilt with the camera. Flat markers are oriented against the surface of the earth, and will rotate and tilt with the camera | rotation | boolean | The orientation of the marker, specified in degrees clockwise | anchorU | number | Horizontal icon offset from the marker position | anchorV | number | Vertical icon offset from the marker position | userData | any | Additional information assigned to the marker | zIndex | number | Z-index of the marker

Coordinate

| Property | Type |:---------|:---- | lat | number | lng | number

Removing Markers

To remove a marker from the map, call the removeMarker() method on the GoogleMap instance and pass it the marker to be removed.

function removeMarker(map: GoogleMap, marker: Marker) {
	map.removeMarker(marker);
}

Circles

Adding Circles

To add a circle to the map, call the addCircle() method and specify its properties with a CircleOptions object.

function addCircle(map: GoogleMap, circleOptions: CircleOptions): Circle {
	return map.addCircle(circleOptions);
}

CircleOptions

| Property | Type |:---------|:----- center | Coordinate | fillColor | Color | string | radius | number | strokeColor | Color | string | strokePattern | PatternItem & Partial<NativeObject>[] | strokeWidth | number | tappable | boolean | visible | boolean | zIndex | number | userData | { [key: string]: any } |

Removing Circles

You can remove a circle using the GoogleMap's removeCircle() method.

function removeCircle(map: GoogleMap, circle: Circle) {
	map.removeCircle(circle);
}

Polygons

Adding Polygons

You can create polygons using the GoogleMap's object addPolygon() method by passing in the specified PolygonOptions.

function addPolygon(map: GoogleMap, polygonOptions: PolygonOptions): Polygon {
	return map.addPolygon(polygonOptions);
}

PolygonOptions

| Property | Type |:---------|:----- | points | Coordinate[] | | holes | Coordinate[] | | tappable | boolean | | strokeWidth | number | | strokeColor | Color | string | | fillColor | Color | string | | strokePattern | PatternItem & Partial<NativeObject>[] | | zIndex | number | | geodesic | boolean | | strokeJointType | JointType | | visible | boolean | | userData | { [key: string]: any } |

Removing Polygons

You can remove a Polygon using the GoogleMap's removePolygon function, like so:

function removePolygon(map: GoogleMap, polygon: Polygon) {
	map.removePolygon(polygon);
}

Polylines

Adding Polylines

You can create Polylines using the GoogleMap's object addPolyline function by passing it a PolylineOptions object.

function addPolyline(map: GoogleMap, polylineOptions: PolylineOptions): Polyline {
	return map.addPolyline(polylineOptions);
}

PolylineOptions

| Property | Type |:---------|:----- | width | number | | points | Coordinate[] | | tappable | boolean | | geodesic | boolean | | visible | boolean | | zIndex | number | | jointType | JointType | | pattern | PatternItem & Partial<NativeObject>[] | | color | Color | string | | startCap | Cap & Partial<NativeObject> | | endCap | Cap & Partial<NativeObject> | | userData | { [key: string]: any } |

Removing Polylines

You can remove a Polyline using the GoogleMap's removePolyline function, like so:

function removePolyline(map: GoogleMap, polyline: Polyline) {
	map.removePolyline(polyline);
}

Ground Overlays

Adding Ground Overlays

You can create Ground Overlays using the GoogleMap's object addGroundOverlay function by passing in the specified GroundOverlay Options.

function addGroundOverlay(map: GoogleMap, groundOverlayOptions: GroundOverlayOptions): GroundOverlay {
	return map.addGroundOverlay(groundOverlayOptions);
}

GroundOverlayOptions

| Property | Type |:---------|:----- zIndex | number | visible | boolean | transparency | number | position | Coordinate | bounds | CoordinateBounds | tappable | boolean | bearing | number | image | ImageSource | userData | any | width | number | height | number | anchorU | number | anchorV | number |

Removing Ground Overlays

You can remove a GroundOverlay using the GoogleMap's removeGroundOverlay function, like so:

function removeGroundOverlay(map: GoogleMap, groundOverlay: GroundOverlay) {
	map.removeGroundOverlay(groundOverlay);
}

Tile Overlays

Adding Tile Overlays

You can create Tile Overlays using the GoogleMap's object addTileOverlay function by passing in the specified TileOverlay Options.

function addTileOverlay(map: GoogleMap, tileOverlayOptions: TileOverlayOptions): TileOverlay {
	return map.addTileOverlay(tileOverlayOptions);
}

TileOverlayOptions

| Property | Type |:---------|:----- | fadeIn | boolean | | transparency | number | | visible | boolean | | tileProvider | TileProvider & Partial<NativeObject> | | zIndex | number | | clearTileCache() | void |

Setting tile overlay options after the tile overlay has been added to the map can have no effect on the tile overlay. To update the tile overlay, you may need to call clearTileCache().

Removing Tile Overlays

You can remove a TileOverlay using the GoogleMap's removeTileOverlay function, like so:

function removeTileOverlay(map: GoogleMap, tileOverlay: TileOverlay) {
	map.removeTileOverlay(tileOverlay);
}

Tile Providers

Tile providers are objects that provide tiles to be used in a Tile Overlay.

| Provider | Description | |:---------|:------------| | TileProvider | Base class for tile providers | | UrlTileProvider | Tile provider that returns a tile from a URL |

For example a UrlTileProvider can be created like so:

const tileProvider = new UrlTileProvider((x, y, z) => {
	return `https://tiles.example.com/${z}/${x}/${y}.png`;
});

License

Apache License Version 2.0