xref: /expo/packages/expo-maps/build/Map.js.map (revision ae642c8a)
1{"version":3,"file":"Map.js","sourceRoot":"","sources":["../src/Map.tsx"],"names":[],"mappings":"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","sourcesContent":["import { ProxyNativeModule, requireNativeModule } from 'expo-modules-core';\nimport React from 'react';\nimport { Platform, findNodeHandle } from 'react-native';\n\nimport { CameraMove } from './Common.types';\nimport { DefaultNativeExpoMapViewProps, ExpoMapState, ExpoMapViewProps } from './Map.types';\nimport {\n  NativeExpoAppleMapsView,\n  NativeExpoAppleMapsModule,\n  NativeExpoGoogleMapsView,\n  NativeExpoGoogleMapsModule,\n} from './NativeExpoMapView';\nimport * as Utils from './Utils';\n\nexport { Marker } from './Marker';\nexport { Polygon } from './Polygon';\nexport { Polyline } from './Polyline';\nexport { Circle } from './Circle';\nexport { Cluster } from './Cluster';\nexport { KML } from './KML';\nexport { GeoJson } from './GeoJson';\nexport { Overlay } from './Overlay';\nexport { ExpoMapRef } from './Map.types';\nexport { POICategoryType } from './Map.types';\nexport { Heatmap } from './Heatmap';\nexport * from './Events';\n\nconst defaultNativeExpoMapViewProps: DefaultNativeExpoMapViewProps = {\n  mapType: 'normal',\n  showZoomControls: true,\n  showCompass: true,\n  showMapToolbar: true,\n  showMyLocationButton: true,\n  showLevelPicker: true,\n  enableRotateGestures: false,\n  enableScrollGestures: true,\n  enableTiltGestures: false,\n  enableZoomGestures: true,\n  initialCameraPosition: {\n    target: {\n      latitude: 51.51,\n      longitude: 0.13,\n    },\n    zoom: 4,\n    animate: true,\n    duration: 1000,\n  },\n  enableTraffic: false,\n  enablePOISearching: false,\n  enablePOIs: false,\n  enablePOIFilter: [],\n  createPOISearchRequest: '',\n  clickablePOIs: true,\n};\n\n/**\n * Main map component of Expo Maps library.\n *\n * See {@link ExpoMapViewProps} to learn more about props.\n */\nexport class ExpoMap extends React.Component<ExpoMapViewProps> {\n  state: ExpoMapState = {\n    markers: [],\n    polygons: [],\n    polylines: [],\n    circles: [],\n    clusters: [],\n    kmls: [],\n    geojsons: [],\n    overlays: [],\n    heatmaps: [],\n  };\n  _ismounted = false;\n  mapView = React.createRef<ExpoMap>();\n\n  getSearchCompletions(queryFragment: string) {\n    const nodeHandle = findNodeHandle(this.mapView.current);\n    let module: ProxyNativeModule;\n    if (Platform.OS === 'ios' && this.props.provider === 'apple') {\n      module = NativeExpoAppleMapsModule;\n    } else {\n      module = NativeExpoGoogleMapsModule;\n    }\n\n    module\n      .getSearchCompletions(nodeHandle, queryFragment)\n      .then((response: [string]) => {\n        console.log(response);\n      })\n      .catch((error: Error) => {\n        console.log('Error with message: ' + error.message);\n      });\n  }\n\n  async moveCamera(cameraMove: CameraMove) {\n    const nodeHandle = findNodeHandle(this.mapView.current);\n    let module: ProxyNativeModule;\n    if (Platform.OS === 'ios' && this.props.provider === 'apple') {\n      module = requireNativeModule('ExpoAppleMaps');\n    } else {\n      module = requireNativeModule('ExpoGoogleMaps');\n    }\n    return module.moveCamera(nodeHandle, cameraMove);\n  }\n\n  componentDidMount() {\n    this.mapChildren();\n    this._ismounted = true;\n  }\n\n  componentWillUnmount() {\n    this._ismounted = false;\n  }\n\n  componentDidUpdate(_, prevState: ExpoMapState) {\n    if (Object.is(this.state, prevState)) {\n      this.mapChildren();\n    }\n  }\n\n  private async mapChildren() {\n    const childrenArray = React.Children.map(this.props.children, async (child) => {\n      if (!Utils.isSimpleType(child)) {\n        if (Utils.isMarker(child)) {\n          return Utils.buildMarkerObject(child);\n        } else if (Utils.isPolygon(child)) {\n          return Utils.buildPolygonObject(child);\n        } else if (Utils.isPolyline(child)) {\n          return Utils.buildPolylineObject(child);\n        } else if (Utils.isCircle(child)) {\n          return Utils.buildCircleObject(child);\n        } else if (Utils.isKML(child)) {\n          return Utils.buildKMLObject(child);\n        } else if (Utils.isGeoJson(child)) {\n          return Utils.buildGeoJsonObject(child);\n        } else if (Utils.isCluster(child)) {\n          return Utils.buildClusterObject(child);\n        } else if (Utils.isOverlay(child)) {\n          return Utils.buildOverlayObject(child);\n        } else if (Utils.isHeatmap(child)) {\n          return Utils.buildHeatmapObject(child);\n        }\n        Utils.warnIfChildIsIncompatible(child);\n        return null;\n      }\n      Utils.warnIfChildIsIncompatible(child);\n      return null;\n    });\n\n    if (childrenArray !== undefined) {\n      // TODO(@lukmccall): remove any cast\n      const propObjects = await Promise.all(childrenArray as any);\n      if (this._ismounted) {\n        this.setState({\n          markers: propObjects.filter((elem) => elem?.type === 'marker'),\n          polygons: propObjects.filter((elem) => elem?.type === 'polygon'),\n          polylines: propObjects.filter((elem) => elem?.type === 'polyline'),\n          circles: propObjects.filter((elem) => elem?.type === 'circle'),\n          clusters: propObjects.filter((elem) => elem?.type === 'cluster'),\n          kmls: propObjects.filter((elem) => elem?.type === 'kml'),\n          geojsons: propObjects.filter((elem) => elem?.type === 'geojson'),\n          overlays: propObjects.filter((elem) => elem?.type === 'overlay'),\n          heatmaps: propObjects.filter((elem) => elem?.type === 'heatmap'),\n        });\n      }\n    }\n  }\n\n  render() {\n    if (Platform.OS === 'ios' && this.props.provider === 'apple') {\n      if (parseInt(Platform.Version, 10) < 13 && this.state.geojsons.length > 0) {\n        console.warn(\n          \"Versions of iOS < 13 doesn't support GeoJSON features for Apple Maps. Adding of GeoJSON for these versions will be omitted.\"\n        );\n      }\n      if (parseInt(Platform.Version, 10) < 13) {\n        console.warn(\n          \"Versions of iOS < 13 doesn't support Points Of Interest Filters and their display modifications for Apple Maps. Adding POI filters for these versions will be omitted.\"\n        );\n      }\n      return (\n        <NativeExpoAppleMapsView\n          {...defaultNativeExpoMapViewProps}\n          {...this.props}\n          markers={this.state.markers}\n          polygons={this.state.polygons}\n          polylines={this.state.polylines}\n          circles={this.state.circles}\n          clusters={this.state.clusters}\n          kmls={this.state.kmls}\n          geojsons={this.state.geojsons}\n          ref={this.mapView}\n        />\n      );\n    }\n\n    let googleMapsJsonStyleString = this.props.googleMapsJsonStyleString\n      ? this.props.googleMapsJsonStyleString\n      : '';\n    if (this.props.enablePOIs === false) {\n      if (this.props.googleMapsJsonStyleString) {\n        console.warn(\n          \"Expo Maps enablePOIs prop isn't effective when custom Google Maps map style is active. Please adjust your style manually to disable the POIs. https://developers.google.com/maps/documentation/ios-sdk/poi\"\n        );\n      } else {\n        googleMapsJsonStyleString = JSON.stringify([\n          {\n            featureType: 'poi',\n            stylers: [{ visibility: 'off' }],\n          },\n        ]);\n      }\n    }\n\n    return (\n      <NativeExpoGoogleMapsView\n        {...defaultNativeExpoMapViewProps}\n        {...this.props}\n        googleMapsJsonStyleString={googleMapsJsonStyleString}\n        markers={this.state.markers}\n        polygons={this.state.polygons}\n        polylines={this.state.polylines}\n        circles={this.state.circles}\n        clusters={this.state.clusters}\n        kmls={this.state.kmls}\n        geojsons={this.state.geojsons}\n        ref={this.mapView}\n        overlays={this.state.overlays}\n        heatmaps={this.state.heatmaps}\n      />\n    );\n  }\n}\n"]}