mirror of
https://github.com/mudabbir-ahmad/MAD-Treasure-Hunt.git
synced 2026-10-08 03:00:20 +00:00
Add FOV cone visualization to map screens; refactor geoMath utility for heading and cone calculations
Have FOV config as it's own thing so it's easier to change the size of the FOV triangle without having to change multiple parts of the maths for it. Fov triangle needed because for some reason maps doesn't let us have our own fov ??
This commit is contained in:
1 parent
c4c8fcf91d
commit
1e405bb87f
5 files changed
+64
-84
No files matched your search
@@ -1,6 +1,6 @@
|
||||
import React from 'react';
|
||||
import {StyleSheet, View} from 'react-native';
|
||||
import MapView, {Circle, Marker} from 'react-native-maps';
|
||||
import MapView, {Circle, Polygon} from 'react-native-maps';
|
||||
import {getFovCone} from '../../utils/geoMath';
|
||||
|
||||
const PlayerMapView = ({ userLocation, visibleCache, heading }) => {
|
||||
// Initialisation -------------
|
||||
@@ -10,6 +10,10 @@ const PlayerMapView = ({ userLocation, visibleCache, heading }) => {
|
||||
|
||||
if (!userLocation) return null;
|
||||
|
||||
const coneCoords = (heading !== null && heading !== undefined)
|
||||
? getFovCone(userLocation, heading)
|
||||
: null;
|
||||
|
||||
return (
|
||||
<MapView
|
||||
style={{flex: 1}}
|
||||
@@ -32,35 +36,17 @@ const PlayerMapView = ({ userLocation, visibleCache, heading }) => {
|
||||
strokeColor="rgba(250, 204, 21, 0.90)"
|
||||
/>
|
||||
) : null}
|
||||
{heading !== null && heading !== undefined && (
|
||||
<Marker
|
||||
coordinate={userLocation}
|
||||
flat={true}
|
||||
rotation={heading}
|
||||
anchor={{x: 0.5, y: 1.0}}
|
||||
tracksViewChanges={false}
|
||||
>
|
||||
<View style={styles.coneWrap}>
|
||||
<View style={styles.cone}/>
|
||||
</View>
|
||||
</Marker>
|
||||
{coneCoords && (
|
||||
<Polygon
|
||||
coordinates={coneCoords}
|
||||
fillColor="rgba(66,133,244,0.28)"
|
||||
strokeColor="rgba(66,133,244,0.50)"
|
||||
strokeWidth={1}
|
||||
/>
|
||||
)}
|
||||
</MapView>
|
||||
);
|
||||
};
|
||||
|
||||
const styles = StyleSheet.create({
|
||||
coneWrap: {width: 22, height: 24, alignItems: 'center'},
|
||||
cone: {
|
||||
width: 0,
|
||||
height: 0,
|
||||
borderTopWidth: 24,
|
||||
borderLeftWidth: 11,
|
||||
borderRightWidth: 11,
|
||||
borderTopColor: 'rgba(37,99,235,0.70)',
|
||||
borderLeftColor: 'transparent',
|
||||
borderRightColor: 'transparent',
|
||||
},
|
||||
});
|
||||
|
||||
export default PlayerMapView;
|
||||
Reference in new issue
Block a user