I’m trying to dynamically load a UCesiumGeoJsonDocumentRasterOverlay in Unreal Engine (Cesium for Unreal) using C++, but it does not render the GeoJSON data, even though the same setup works perfectly when manually placed in the Editor.
I use the following code to dynamically create and attach the overlay。
ACesiumGeoreference* Georeference = ACesiumGeoreference::GetDefaultGeoreference(GetWorld());
if (!Georeference) return;
ACesium3DTileset* Tileset = FindFirstTilesetInWorld(GetWorld());
if (!Tileset) return;
UCesiumGeoJsonDocumentRasterOverlay* GeoJsonOverlay = NewObject<UCesiumGeoJsonDocumentRasterOverlay>(Tileset);
if (!GeoJsonOverlay) return;
GeoJsonOverlay->Source = ECesiumGeoJsonDocumentRasterOverlaySource::FromUrl;
GeoJsonOverlay->MaterialLayerKey = TEXT("OverlayGeoJson01");
FString Url = FString::Printf(TEXT("http://192.168.0.15:9988/gis/genGrid?centerLon=%f¢erLat=%f&spacing=%f&range=%f"),
CenterLatitude, CenterLongitude, GridIntervalMeters, GridRangeMeters);
GeoJsonOverlay->Url = Url;
GeoJsonOverlay->DefaultStyle.LineStyle.Color = LineColor;
GeoJsonOverlay->DefaultStyle.LineStyle.Width = LineWidth;
GeoJsonOverlay->DefaultStyle.LineStyle.WidthMode = ECesiumVectorLineWidthMode::Meters;
GeoJsonOverlay->AddToTileset();
GeoJsonOverlay->Refresh();
Tileset->RefreshTileset();