2.0.1 • Published 2 years ago

react-native-open-street-map v2.0.1

Weekly downloads
-
License
-
Repository
github
Last release
2 years ago

Open Street Maps to react-native

This project is one fork of react-native-maps to use open-street-map

RoadMap

  • change use of GoogleMaps to OpenStreetMap

  • render map in open-street-maps in android

  • add props OpenStreetMap (WIP)

    • zoom
    • router
    • router with one location
    • initial router
  • render open-street-maps to iOS

How to use

this project is done to render maps in open-street-maps on android

install

package.json

  "react-native-open-street-map": "https://github.com/enieber/react-native-open-street-map.git"
npm install 

or

yarn

Android

setting.gradle

// Open Street Map
include ':react-native-open-street-map'
project(':react-native-open-street-map').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-open-street-map/lib/android')

app/build.gradle

dependencies {
 ...
    compile (project(':react-native-open-street-map')) {
        // if you use the lib gms in the project or libs on project
        exclude group: 'com.google.android.gms'
    }

app/src/main/java/{project_name}/MainApplication.java

...
import com.airbnb.android.react.maps.MapsPackage;

public class MainApplication extends Application implements ReactApplication {

    @Override
    protected List<ReactPackage> getPackages() {
      new MainReactPackage(),
      new MapsPackage() // insert this line to init module maps
    }
}    

iOS

the iOS instalation is equals in the lib of react-native-maps because this fork not set iOS to use Open Street Maps, only Apple Maps.

Props

nametypeiOSAndroidInfo
routerObject-OKrouter object espcificate in routerObject
regionGeolocation-OKthe initial region render map
zoomint-OKshow init zoom
showsUserLocationboolean-OKshow location in Map

Router Object

nametyperequiredInfo
coordinatesArraytruearray of object with latitude and longitude
titleAStringtruetitle of first location
descriptionAStringtruedescription of first location
titleBStringfalsetitle of second location
descriptionBStringfalsedescription of second location

Exaple

How to make router from point A to point B

import React from 'react';
import { Dimensions } from 'react-native';
import MapView from 'react-native-open-street-map';

class CustonMap extends React.PureComponent {
  render() {
    const {
      width,
      height,
    } = Dimensions.get('window');
    const region = {
      latitude: 0,
      longitude: 0,
      latitudeDelta:  0.0922,
      longitudeDelta: 0.0922 * (width / height)
    };
    const latitudes = [-15.806553, -15.8202434];
    const longitudes = [-47.8891454, -47.9045093];
    
    return (
      <MapView
        ref="map"
        zoom={5}
        style={{
          flex: 1
        }}
        region={region}
        showsUserLocation
        router={{
          titleA: "The point A",
          titleB: "The point B",
          descriptionA: "Bank",
          descriptionB: "Scholl",
          coordinates: [
            {
              latitude: latitudes[0],
              longitude: longitudes[1],
            },
            {
              latitude: latitudes[1],
              longitude: longitudes[1],
            }
          ]
        }}
      />
    );
  }
}

sample router with one point object

import React from 'react';
import { Dimensions } from 'react-native';
import MapView from 'react-native-open-street-map';

class CustonMap extends React.PureComponent {
  render() {
    const {
      width,
      height,
    } = Dimensions.get('window');
    const region = {
      latitude: 0,
      longitude: 0,
      latitudeDelta:  0.0922,
      longitudeDelta: 0.0922 * (width / height)
    };
    return (
      <MapView
        ref="map"
        zoom={5}
        multiTouchControls
        style={{
          flex: 1
        }}
        region={region}
        showsUserLocation
        router={{
          titleA: 'New Yourk city',
          descriptionA: 'My location',
          coordinates: [{
            latitude: parseFloat('40.7142700'),
            longitude: parseFloat('-74.0059700'),
          }],
        }}
      />
    );
  }
}