Draw a line between two markers map-box react-native?

前端 未结 1 658
难免孤独
难免孤独 2020-12-31 15:48

I was able to achieve creating a marker(annotation) on the map using the below code in react-native.

import React, { Component } fr         


        
相关标签:
1条回答
  • 2020-12-31 16:39

    Like I shared in my previous answer: In your state, have a variable that is a geojson of type linestring. This takes more than two coordinates, which is basically the number of points you are passing the line through. What the "awesome" mapbox documentation neglects to mention when they show you the polyline tag is that you need to wrap it in a shapeSource tag under the MapboxGL tag. In this.state I put a geojson variable called route. Maybe it will make more sense with the below code sample:

    import React, {Component} from 'react';
    import {
    
    
     Platform,
      StyleSheet,
      Text,
      View,
      Button
    } from 'react-native';
    import MapboxGL from '@mapbox/react-native-mapbox-gl';
    
    MapboxGL.setAccessToken('your access key');
    
    export default class App extends Component {
      constructor() {
        super();
        this.state = {
          route:
            {
              "type": "FeatureCollection",
              "features": [
                {
                  "type": "Feature",
                  "properties": {},
                  "geometry": {
                    "type": "LineString",
                    "coordinates": [
                      [
                        11.953125,
                        39.436192999314095
                      ],
                      [
                        18.896484375,
                        46.37725420510028
                      ]
                    ]
                  }
                }
              ]
            },   
        }
      }
    
      render() {
        return (
          <View style={styles.container}>
            <MapboxGL.MapView
              styleURL={MapboxGL.StyleURL.Light}
              zoomLevel={15}
              centerCoordinate={[11.256, 43.770]}
              style={styles.container}> 
              <MapboxGL.ShapeSource id='line1' shape={this.state.route}>
                <MapboxGL.LineLayer id='linelayer1' style={{lineColor:'red'}} />
              </MapboxGL.ShapeSource>
    
            </MapboxGL.MapView>
          </View>
        );
      }
    }
    
    const styles = StyleSheet.create({
      container: {
        flex: 1,
      },
    });
    
    0 讨论(0)
提交回复
热议问题