-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
303e90a
commit 21ae12f
Showing
16 changed files
with
3,866 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,16 @@ | ||
/** @type import('eslint').Linter.Config */ | ||
module.exports = { | ||
root: true, | ||
env: {browser: true, es2020: true}, | ||
extends: [ | ||
'eslint:recommended', | ||
'plugin:@typescript-eslint/recommended', | ||
'plugin:react-hooks/recommended' | ||
], | ||
ignorePatterns: ['dist', '.eslintrc.cjs'], | ||
parser: '@typescript-eslint/parser', | ||
plugins: ['react-refresh'], | ||
rules: { | ||
'react-refresh/only-export-components': ['warn', {allowConstantExport: true}] | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,24 @@ | ||
# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. | ||
|
||
# dependencies | ||
/node_modules | ||
/.pnp | ||
.pnp.js | ||
|
||
# testing | ||
/coverage | ||
|
||
# production | ||
/build | ||
|
||
# misc | ||
.DS_Store | ||
.env.local | ||
.env.development.local | ||
.env.test.local | ||
.env.production.local | ||
|
||
npm-debug.log* | ||
yarn-debug.log* | ||
yarn-error.log* | ||
.yarn |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
nodeLinker: node-modules |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
# Map SDK basic example | ||
|
||
A Map SDK effects example. | ||
|
||
This is an example for Foursquare's [Map SDK](https://location.foursquare.com/developer/docs/studio-map-sdk-introduction) that allows you to programmatically render [Foursquare Studio](https://studio.foursquare.com/) maps within your website and with your own data. | ||
|
||
The project was bootstrapped with [Vite](https://vitejs.dev/guide/). | ||
|
||
## Available Scripts | ||
|
||
In the project directory, you can run: | ||
|
||
### `yarn dev` | ||
|
||
Runs the app in the development mode.\ | ||
By default, the app is available at [http://localhost:5173](http://localhost:5173/) in your browser. | ||
|
||
The page will reload when you make edits.\ | ||
You will also see any lint errors in the console. | ||
|
||
### `yarn build` | ||
|
||
Builds and bundles the app for production into the `dist` folder. | ||
|
||
### `yarn preview` | ||
|
||
Runs a server to locally preview the production build. | ||
|
||
If you don't use `yarn dev`, you likely would want to use `yarn build` and `yarn preview` together. | ||
|
||
## Learn More | ||
|
||
You can learn more about [setting up a React app with Vite](https://react.dev/learn/add-react-to-an-existing-project) and on the official [Vite webiste](https://vitejs.dev/guide/). | ||
|
||
To learn React, check out the [React documentation](https://react.dev/). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,15 @@ | ||
<!DOCTYPE html> | ||
<html lang="en"> | ||
|
||
<head> | ||
<meta charset="utf-8" /> | ||
<link rel="icon" href="/fsq-favicon.png" /> | ||
<title>Effects Example</title> | ||
</head> | ||
|
||
<body> | ||
<script type="module" src="/src/index.tsx"></script> | ||
<div id="root"></div> | ||
</body> | ||
|
||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
{ | ||
"name": "example-template", | ||
"version": "0.0.0", | ||
"private": true, | ||
"type": "module", | ||
"scripts": { | ||
"dev": "vite", | ||
"build": "tsc && vite build", | ||
"lint": "eslint . --ext ts,tsx --report-unused-disable-directives --max-warnings 0", | ||
"preview": "vite preview" | ||
}, | ||
"dependencies": { | ||
"@unfolded/map-sdk": "^1.10.0", | ||
"react": "^18.2.0", | ||
"react-dom": "^18.2.0" | ||
}, | ||
"devDependencies": { | ||
"@types/eslint": "^8.44.2", | ||
"@types/react": "^18.2.18", | ||
"@types/react-dom": "^18.2.7", | ||
"@typescript-eslint/eslint-plugin": "^6.2.1", | ||
"@typescript-eslint/parser": "^6.2.1", | ||
"@vitejs/plugin-react": "^4.0.4", | ||
"eslint": "^8.46.0", | ||
"eslint-plugin-react-hooks": "^4.6.0", | ||
"eslint-plugin-react-refresh": "^0.4.3", | ||
"typescript": "^5.2.2", | ||
"vite": "^4.4.9" | ||
} | ||
} |
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,116 @@ | ||
import {FC, useEffect, useMemo, useRef, useState} from 'react'; | ||
import {createMap, MapApi} from '@unfolded/map-sdk'; | ||
import {SampleDataItem, fetchSampleData} from './sample-data'; | ||
|
||
export const App: FC = () => { | ||
const containerRef = useRef<HTMLDivElement>(null); | ||
const [map, setMap] = useState<MapApi | null>(null); | ||
const [sampleData, setSampleData] = useState<[SampleDataItem] | null>(null); | ||
|
||
useEffect(() => { | ||
const loadData = async () => { | ||
setSampleData(await fetchSampleData()); | ||
}; | ||
|
||
const initMap = async () => { | ||
const map = await createMap({ | ||
container: containerRef.current! | ||
}); | ||
setMap(map); | ||
}; | ||
|
||
initMap(); | ||
loadData(); | ||
}, []); | ||
|
||
useEffect(() => { | ||
if (map && sampleData && sampleData.length > 0) { | ||
map.addDataset(sampleData[0], {autoCreateLayers: false}); | ||
map.addLayer({ | ||
type: 'grid', | ||
dataId: 'earthquakes', | ||
fields: { | ||
lat: 'Latitude', | ||
lng: 'Longitude' | ||
}, | ||
config: { | ||
visConfig: { | ||
worldUnitSize: 26, | ||
elevationScale: 90, | ||
enable3d: true | ||
} | ||
} | ||
}); | ||
map.setMapConfig({ | ||
version: 'v1', | ||
config: { | ||
mapState: { | ||
pitch: 50, | ||
bearing: 24, | ||
mapViewMode: 'MODE_3D' | ||
} | ||
} | ||
}); | ||
map.setView({ | ||
latitude: 36.7045671093519, | ||
longitude: -122.47582941779496, | ||
zoom: 5.920306814575524 | ||
}); | ||
} | ||
}, [map, sampleData]); | ||
|
||
const handlers = useMemo(() => { | ||
if (!sampleData) { | ||
console.log('Data not yet loaded.'); | ||
return null; | ||
} | ||
|
||
if (!map) { | ||
console.log('Map not yet initialized.'); | ||
return null; | ||
} | ||
|
||
return { | ||
addEffectLightShadow: () => { | ||
map.addEffect({ | ||
type: 'light-and-shadow', | ||
parameters: { | ||
timeMode: 'pick', | ||
timestamp: 1695250260000 | ||
} | ||
}); | ||
}, | ||
addEffectHexagonalPixelate: () => { | ||
map.addEffect({ | ||
type: 'hexagonal-pixelate', | ||
parameters: { | ||
scale: 8.5 | ||
} | ||
}); | ||
}, | ||
addEffectHueSaturation: () => { | ||
map.addEffect({ | ||
type: 'hue-saturation', | ||
parameters: { | ||
hue: 0.6, | ||
saturation: 0.4 | ||
} | ||
}); | ||
} | ||
}; | ||
}, [map, sampleData]); | ||
|
||
return ( | ||
<> | ||
<div id="map-container" ref={containerRef}></div> | ||
{!!handlers && ( | ||
<div className="controls"> | ||
{/* Buttons for various effect operations */} | ||
<button onClick={handlers.addEffectLightShadow}>Light and Shadow</button> | ||
<button onClick={handlers.addEffectHexagonalPixelate}>Hexagonal Pixelate</button> | ||
<button onClick={handlers.addEffectHueSaturation}>Hue and Saturation</button> | ||
</div> | ||
)} | ||
</> | ||
); | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
body { | ||
margin: 0; | ||
padding: 0; | ||
} | ||
|
||
#map-container { | ||
width: 100vw; | ||
height: 100vh; | ||
overflow: hidden; | ||
} | ||
|
||
.controls { | ||
position: fixed; | ||
right: 0; | ||
bottom: 0; | ||
margin: 20px; | ||
display: flex; | ||
gap: 5px; | ||
flex-direction: column; | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
import {createRoot} from 'react-dom/client'; | ||
import './index.css'; | ||
import {App} from './App'; | ||
|
||
createRoot(document.getElementById('root')!).render(<App />); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,20 @@ | ||
const BASE_URL = `https://4sq-studio-public.s3.us-west-2.amazonaws.com/sdk/examples/sample-data`; | ||
|
||
export type SampleDataItem = { | ||
id: string; | ||
label: string; | ||
data: object; | ||
}; | ||
|
||
export const fetchSampleData = async (): Promise<[SampleDataItem]> => { | ||
const responses = await Promise.all([fetch(`${BASE_URL}/earthquakes.json`)]); | ||
|
||
const data = await Promise.all(responses.map(r => r.json())); | ||
return [ | ||
{ | ||
id: 'earthquakes', | ||
label: 'Earthquakes', | ||
data: data[0] | ||
} | ||
]; | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
{ | ||
"compilerOptions": { | ||
"target": "ES2020", | ||
"useDefineForClassFields": true, | ||
"lib": ["ES2020", "DOM", "DOM.Iterable"], | ||
"module": "ESNext", | ||
"skipLibCheck": true, | ||
|
||
/* Bundler mode */ | ||
"moduleResolution": "bundler", | ||
"allowImportingTsExtensions": true, | ||
"resolveJsonModule": true, | ||
"isolatedModules": true, | ||
"noEmit": true, | ||
"jsx": "react-jsx", | ||
|
||
/* Linting */ | ||
"strict": true, | ||
"noUnusedLocals": true, | ||
"noUnusedParameters": true, | ||
"noFallthroughCasesInSwitch": true | ||
}, | ||
"include": ["src"], | ||
"references": [{ "path": "./tsconfig.node.json" }] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
{ | ||
"compilerOptions": { | ||
"composite": true, | ||
"skipLibCheck": true, | ||
"module": "ESNext", | ||
"moduleResolution": "bundler", | ||
"allowSyntheticDefaultImports": true | ||
}, | ||
"include": ["vite.config.ts"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
import {defineConfig} from 'vite'; | ||
import react from '@vitejs/plugin-react'; | ||
|
||
// https://vitejs.dev/config/ | ||
export default defineConfig({ | ||
plugins: [react()] | ||
}); |
Oops, something went wrong.