Hallo zusammen. Ich versuche, eine Mapping-Anwendung mit CesiumJS und React über die Resium-Bibliothek zu erstellen. Ich möchte die FAA VFR Sectional Charts anzeigen, die hier zu finden sind: https:\/\/faa.maps.arcgis.com\/home\/item.html?id=6ab79dc5de5743adb3e3b6e3c803aa59<\/A>Ich bin noch relativ neu bei Cesium\/Resium. Ich habe die ArcGis\/CesiumJS-Dokumentation zum Laden von Kartenkacheln hier gelesen: https:\/\/developers.arcgis.com\/cesiumjs\/layers\/add-map-tiles\/<\/A>, die natürlich nur das Basiscodeset von CesiumJS verwendet. Ich habe überprüft, dass meine Zugriffstoken korrekt sind und nicht null oder ähnliches. Mein ArcGis-Entwicklertoken hat alle verfügbaren Berechtigungen, die ich einstellen konnte. Ich habe auch versucht, die URL für die Kartenkacheln der Santa Monica Parzellen hier zu verwenden: https:\/\/developers.arcgis.com\/cesiumjs\/layers\/<\/A>, bekomme aber immer noch einen 404-Fehler. Ich übergebe meinen Zugriffstoken, wie Sie sehen können, und es gab eine ArcGis-URL, bei der ich Kacheln laden konnte. Gibt es irgendeine Art von Berechtigungseinstellung, die ich vornehmen muss, um auf diese FAA-Kartenkacheln zuzugreifen? Es heißt, sie seien öffentlich? Ich bin neu in dem Bereich, also muss ich etwas übersehen haben, um korrekt eine Verbindung herzustellen und diese Kacheln zu erhalten. Vielen Dank für jede Hilfe, die Sie geben können.<\/P> <\/P> <\/P>import { ArcGisMapServerImageryProvider, ArcGisMapService, ImageryLayer, Ion } from 'cesium'; import { useEffect, useState } from "react"; import { Viewer } from "resium"; function App() { const arcGisApiKey = import.meta.env.VITE_ARCGIS_API_KEY; const cesiumAccessToken = import.meta.env.VITE_CESIUM_API_KEY; Ion.defaultAccessToken = cesiumAccessToken; ArcGisMapService.defaultAccessToken = arcGisApiKey; Ion.defaultAccessToken = cesiumAccessToken; ArcGisMapService.defaultAccessToken = arcGisApiKey; const [vfrImagery, setVfrImagery] = useState<ImageryLayer | undefined>(undefined); useEffect(() => { async function loadImagery() { try { const vfrImageryProvider = await ArcGisMapServerImageryProvider.fromUrl( "https:\/\/tiles.arcgis.com\/tiles\/ssFJjBXIUyZDrSYZ\/arcgis\/rest\/services\/VFR_Sectional\/MapServer" ); const vfrImageryLayer = new ImageryLayer(vfrImageryProvider); setVfrImagery(vfrImageryLayer); } catch (error) { console.error("Fehler beim Laden der Imagery Provider:", error); } } loadImagery(); }, [arcGisApiKey]); return ( <Viewer baseLayer={vfrImagery} timeline={false} animation={false} geocoder={false} > <\/Viewer> ); } export default App;<\/code><\/pre> <\/P> <\/P> <\/P>
<\/P>
import { ArcGisMapServerImageryProvider, ArcGisMapService, ImageryLayer, Ion } from 'cesium'; import { useEffect, useState } from "react"; import { Viewer } from "resium"; function App() { const arcGisApiKey = import.meta.env.VITE_ARCGIS_API_KEY; const cesiumAccessToken = import.meta.env.VITE_CESIUM_API_KEY; Ion.defaultAccessToken = cesiumAccessToken; ArcGisMapService.defaultAccessToken = arcGisApiKey; Ion.defaultAccessToken = cesiumAccessToken; ArcGisMapService.defaultAccessToken = arcGisApiKey; const [vfrImagery, setVfrImagery] = useState<ImageryLayer | undefined>(undefined); useEffect(() => { async function loadImagery() { try { const vfrImageryProvider = await ArcGisMapServerImageryProvider.fromUrl( "https:\/\/tiles.arcgis.com\/tiles\/ssFJjBXIUyZDrSYZ\/arcgis\/rest\/services\/VFR_Sectional\/MapServer" ); const vfrImageryLayer = new ImageryLayer(vfrImageryProvider); setVfrImagery(vfrImageryLayer); } catch (error) { console.error("Fehler beim Laden der Imagery Provider:", error); } } loadImagery(); }, [arcGisApiKey]); return ( <Viewer baseLayer={vfrImagery} timeline={false} animation={false} geocoder={false} > <\/Viewer> ); } export default App;<\/code><\/pre> <\/P> <\/P> <\/P>
ugh....okay well this embaressing but it's because I didn't zoom in enough....once I zoomed in the tiles loaded in. I guess they have a min/max zoom for when they start to appear.
I also realize I have those two access tokens line twice. That was a typo.
@BrandonBerisfordI tried it and it worked for me. What service is giving you error 404? A 404 error indicates the resource you are attempting to request does not exist, so check your URLs and parameters. If the token was incorrect you would see an error 403 or 401.
I used this example code https://developers.arcgis.com/cesiumjs/scenes/display-a-scene/
I set my ArcGIS API key and Cesium token. Then changed
const arcGisImagery = Cesium.ArcGisMapServerImageryProvider.fromUrl("https://tiles.arcgis.com/tiles/ssFJjBXIUyZDrSYZ/arcgis/rest/services/VFR_Sectional/MapServer");
and that rendered the FAA map
I've attached some screenshots. I've set my cesium ion token and arcgis api key up, and you can see my code below. Idk if you've tried using resium/react instead of vanilla javascript, but this should definetely be possible. I get a ton 404's for like all kinds of tiles it's trying to load it seems?
const arcGisImageryProvider = await ArcGisMapServerImageryProvider.fromBasemapType( ArcGisBaseMapType.SATELLITE, { token: arcGisApiKey } );
If I try just loading the base satellite imagery as seen below it works fine, but when I try to swap to using the fromUrl and the vfr imagery, i get those 404's.
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.