react-native-maps#Circle JavaScript Examples
The following examples show how to use
react-native-maps#Circle.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: MapView.js From Legacy with Mozilla Public License 2.0 | 6 votes |
export default function Map(props) {
const theme = useSelector(i => i.themes[i.theme]);
const appleMaps = useSelector(i => i.settings.appleMaps);
const center = {
latitude: 0,
longitude: 0,
latitudeDelta: 90,
longitudeDelta: 90
}
const mapRef = React.useRef(null);
const [locError, setLocError] = React.useState(false);
async function getLocation() {
var { status } = await Location.requestPermissionsAsync();
if (status !== "granted") {
setLocError(true);
return;
}
try {
var loc = await Location.getCurrentPositionAsync({})
mapRef.current.animateToRegion({
latitude: loc.coords.latitude,
longitude: loc.coords.longitude,
latitudeDelta: 0.5,
longitudeDelta: 0.5,
});
} catch (e) {
setLocError(true);
}
}
return <View style={{ flex: 1 }}>
<MapView
ref={mapRef}
initialRegion={center}
region={props.region}
clusteringEnabled={props.markers?.length>60}
provider={appleMaps?null:"google"}
customMapStyle={theme.mapStyle}
style={{ flex: 1 }}
onRegionChangeComplete={(region)=>{
props.onRegionChange?.({
latitude: region.latitude,
longitude: region.longitude,
latitudeDelta: region.latitudeDelta,
longitudeDelta: region.longitudeDelta
})
}}
>
{(props.circles||[]).map(i => <Circle
key={i.id}
center={{ latitude: i.lat, longitude: i.lng }}
radius={i.radius}
fillColor={i.fill}
strokeColor={i.stroke}
/>)}
{props.markers?.map(i => <MapMarker key={i.id} {...i} />)}
</MapView>
<FAB
style={{ position: "absolute", top: 8, left: 8, backgroundColor: theme.navigation.bg }}
color={theme.navigation.fg}
small
icon={true ? "crosshairs-gps" : "crosshairs"}
onPress={getLocation}
/>
<Snackbar
visible={locError}
onDismiss={() => setLocError(false)}
duration={2000}
>
{typeof locError == "string" ? locError : "Failed retreiving location"}
</Snackbar>
</View>
}
Example #2
Source File: index.js From pandoa with GNU General Public License v3.0 | 5 votes |
MapHistory = ({ positions }) => {
const lines = positions.map(point => {
//if (point.gps_lng && point.gps_lng) {
return {
latitude: point.lat ? point.lat : 0,
longitude: point.lng ? point.lng : 0
};
});
//updateMap(pointIDs);s
const points = positions.map((point, index) => {
const coordinates = {
longitude: point.lng,
latitude: point.lat
};
return (
<Circle
key={index}
center={coordinates}
fillColor="#000"
radius={Platform.OS === "ios" ? 1 : 0.1}
/>
);
});
return (
<React.Fragment>
{points}
{/*<Heatmap
points={lines}
opacity={1}
radius={Platform.OS === "ios" ? 50 : 15}
maxIntensity={100}
gradient={{
colors: [Colors.warningText, Colors.warningText],
startPoints: [0, 1],
colorMapSize: 500
}}
heatmapMode={"POINTS_DENSITY"}
key="aaaa"
/>*/}
{/*<Polyline
coordinates={lines}
geodesic={true}
strokeColor={Colors.warningText} // fallback for when `strokeColors` is not supported by the map-provider
strokeWidth={5}
/>*/}
</React.Fragment>
);
}
Example #3
Source File: index.js From pandoa with GNU General Public License v3.0 | 4 votes |
MapHistory = ({ positions, setDetailTrigger, warnings }) => {
const lines = positions.map(point => {
return {
latitude: point.lat ? point.lat : 0,
longitude: point.lng ? point.lng : 0
};
});
const connectedPoints = warnings;
var concatPoints = [];
connectedPoints.forEach((position, i) => {
const foundSimilar = concatPoints.findIndex(existingPoint => {
const diff = diffCalc(position, existingPoint);
if (diff.distance <= 100 && diff.timeDifference <= 1000 * 60 * 60 * 2) {
return true;
}
});
if (foundSimilar === -1) {
concatPoints.push(position);
}
});
const circle = positions.map((point, index) => {
const coordinates = {
longitude: point.lng,
latitude: point.lat
};
return (
<Circle
key={index}
strokeColor={commonColor.brandPrimary}
center={coordinates}
fillColor={commonColor.brandPrimary}
radius={Platform.OS === "ios" ? 0.3 : 0.1}
/>
);
});
const connectedLines = connectedPoints.map((point, index) => {
if (point.matches && point.matches.length >= 1) {
return point.matches.map((e, i) => (
<Polyline
key={`${i}-${index}`}
coordinates={[
{ latitude: point.position.lat, longitude: point.position.lng },
{ latitude: e.lat, longitude: e.lng }
]}
strokeColor="rgba(255,0,0,0.1)" // fallback for when `strokeColors` is not supported by the map-provider
strokeColors={["rgba(255,0,0,0.5)", "rgba(255,168,12,0.8)"]}
strokeWidth={15.5}
/>
));
}
});
const points = connectedPoints.map((point, index) => {
const coordinates = {
longitude: point.position.lng,
latitude: point.position.lat
};
return (
<Marker
key={index}
anchor={Platform.OS === "ios" ? { x: 0, y: 0 } : { x: 0.53, y: 0.53 }}
coordinate={coordinates}
onCalloutPress={() => setDetailTrigger(point)}
title={`${new Date(point.position.time).toLocaleDateString(
"de-DE",
options
)}`}
description={contactLengthText(point.duration)}
>
{point.matches.length >= 1 ? (
<View style={styles.matchCircle}>
<View style={styles.matchCircleBackground}></View>
<View style={styles.matchCircleInner}></View>
</View>
) : (
<View style={styles.historyCircle} />
)}
</Marker>
);
});
//
//
//
return (
<React.Fragment>
<Polyline
coordinates={lines}
geodesic={true}
// strokeColor={Colors.tintColor} fallback for when `strokeColors` is not supported by the map-provider
strokeWidth={2}
strokeColor="rgba(0,122,255,0.7)"
/>
{circle}
{connectedLines}
{points}
</React.Fragment>
);
}