<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Nemo</title>
    <description>The latest articles on DEV Community by Nemo (@zhunemo).</description>
    <link>https://dev.to/zhunemo</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176240%2F254a0443-612c-4d0d-a8f7-f823db005856.jpg</url>
      <title>DEV Community: Nemo</title>
      <link>https://dev.to/zhunemo</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zhunemo"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Nemo</dc:creator>
      <pubDate>Mon, 02 Nov 2026 13:24:56 +0000</pubDate>
      <link>https://dev.to/zhunemo/-354p</link>
      <guid>https://dev.to/zhunemo/-354p</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70" class="crayons-story__hidden-navigation-link"&gt;Locus Earth: Building an Open-Source 3D Globe That Runs Directly in Your Browser 🌍&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/zhunemo" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176240%2F254a0443-612c-4d0d-a8f7-f823db005856.jpg" alt="zhunemo profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/zhunemo" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nemo
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nemo
                
                
              
              &lt;div id="story-author-preview-content-4963262" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/zhunemo" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176240%2F254a0443-612c-4d0d-a8f7-f823db005856.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nemo&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Nov 2&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70" id="article-link-4963262"&gt;
          Locus Earth: Building an Open-Source 3D Globe That Runs Directly in Your Browser 🌍
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/webgl"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;webgl&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cesium"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cesium&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/opensource"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;opensource&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;5&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              2&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
          
          &lt;div class="only-sidebar-menu-item trusted-visible-block print-hidden align-center"&gt;
                
                    
                
          &lt;/div&gt;

        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>frontend</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
    <item>
      <title>Locus Earth: Building an Open-Source 3D Globe That Runs Directly in Your Browser 🌍</title>
      <dc:creator>Nemo</dc:creator>
      <pubDate>Mon, 02 Nov 2026 13:24:36 +0000</pubDate>
      <link>https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70</link>
      <guid>https://dev.to/zhunemo/locus-earth-building-an-open-source-3d-globe-that-runs-directly-in-your-browser-2d70</guid>
      <description>&lt;p&gt;Have you ever wanted to explore the Earth in 3D without installing a dedicated desktop application?&lt;/p&gt;

&lt;p&gt;That's exactly what I wanted to build.&lt;/p&gt;

&lt;p&gt;Locus Earth is an open-source, browser-based 3D globe application inspired by Google Earth. It combines interactive 3D terrain, satellite imagery, 3D buildings, measurement tools, location search, and more — all accessible directly from a modern web browser.&lt;/p&gt;

&lt;p&gt;No complicated installation. No account registration. Just open the page and start exploring.&lt;/p&gt;

&lt;p&gt;But this project is about more than displaying a 3D globe. I wanted to build something that feels like a complete mapping application, works across desktop and mobile devices, and remains relatively easy for other developers to explore and modify.&lt;/p&gt;

&lt;p&gt;Let's take a look!&lt;/p&gt;

&lt;p&gt;🌍 What is Locus Earth?&lt;/p&gt;

&lt;p&gt;Locus Earth is built with CesiumJS, an open-source JavaScript library for 3D geospatial visualization.&lt;/p&gt;

&lt;p&gt;The application provides an interactive virtual globe with:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Global satellite imagery and 3D terrain.&lt;/li&gt;
&lt;li&gt;Global 3D buildings based on OpenStreetMap data.&lt;/li&gt;
&lt;li&gt;Multiple imagery providers and map styles.&lt;/li&gt;
&lt;li&gt;Location search and navigation.&lt;/li&gt;
&lt;li&gt;Distance and area measurement.&lt;/li&gt;
&lt;li&gt;Custom markers, paths, and polygons.&lt;/li&gt;
&lt;li&gt;Day/night lighting simulation.&lt;/li&gt;
&lt;li&gt;Dark and light themes.&lt;/li&gt;
&lt;li&gt;Offline imagery caching.&lt;/li&gt;
&lt;li&gt;Progressive Web App (PWA) support.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The interface is designed for both desktop and mobile devices, with touch-friendly controls and an adaptive layout.&lt;/p&gt;

&lt;p&gt;🗺️ Exploring the World&lt;/p&gt;

&lt;p&gt;One of the main features is the ability to switch between different imagery sources.&lt;/p&gt;

&lt;p&gt;Instead of relying on a single basemap, Locus Earth integrates several providers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sentinel-2&lt;/li&gt;
&lt;li&gt;Blue Marble&lt;/li&gt;
&lt;li&gt;Nighttime satellite imagery&lt;/li&gt;
&lt;li&gt;Tianditu satellite imagery&lt;/li&gt;
&lt;li&gt;Tencent Maps&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This gives users different ways to explore the same location.&lt;/p&gt;

&lt;p&gt;The application also supports terrain visualization and 3D buildings, making the experience more immersive than a traditional flat map.&lt;/p&gt;

&lt;p&gt;Region-aware features&lt;/p&gt;

&lt;p&gt;Some features are activated depending on the geographic area being viewed.&lt;/p&gt;

&lt;p&gt;For example:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;In supported cities such as Denver, Washington, D.C., and Sydney, the application automatically switches to higher-detail city models.&lt;/li&gt;
&lt;li&gt;When browsing mainland China, a Street View button becomes available, allowing users to jump to panoramic imagery.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is also an experimental Google 3D mode that uses a Google 3D Tiles demonstration asset hosted on Cesium ion. Its availability depends on network connectivity and the continued availability of that asset.&lt;/p&gt;

&lt;p&gt;📐 More Than Just a Globe&lt;/p&gt;

&lt;p&gt;I didn't want Locus Earth to be just something users open, look at, and close.&lt;/p&gt;

&lt;p&gt;So I added several practical mapping tools.&lt;/p&gt;

&lt;p&gt;Measurement tools&lt;/p&gt;

&lt;p&gt;Users can measure distances and areas directly on the globe.&lt;/p&gt;

&lt;p&gt;Both polylines and polygons follow the terrain rather than simply floating above the surface.&lt;/p&gt;

&lt;p&gt;Completed measurements can also be named and saved for later use.&lt;/p&gt;

&lt;p&gt;Markers, paths, and favorites&lt;/p&gt;

&lt;p&gt;Users can create custom markers, paths, and geometric shapes.&lt;/p&gt;

&lt;p&gt;These objects are organized in a unified favorites system and stored locally in the browser.&lt;/p&gt;

&lt;p&gt;They can also be exported and imported using KML (XML), making it easier to preserve or transfer user-created geographic data.&lt;/p&gt;

&lt;p&gt;Location search&lt;/p&gt;

&lt;p&gt;Simply enter a place name to navigate to it.&lt;/p&gt;

&lt;p&gt;The built-in geocoder makes it possible to jump between locations without manually navigating the globe.&lt;/p&gt;

&lt;p&gt;🌗 A Few Details That Make It Feel Like an Application&lt;/p&gt;

&lt;p&gt;There are also several smaller features that make everyday interaction more convenient:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Day/night simulation with adjustable time.&lt;/li&gt;
&lt;li&gt;Sun and Moon lighting.&lt;/li&gt;
&lt;li&gt;Optional 3D terrain.&lt;/li&gt;
&lt;li&gt;Building model visibility controls.&lt;/li&gt;
&lt;li&gt;Compass and camera tilt reset.&lt;/li&gt;
&lt;li&gt;Draggable floating toolbar.&lt;/li&gt;
&lt;li&gt;System-aware light and dark themes.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These features may seem relatively small individually, but together they help make the application feel more complete.&lt;/p&gt;

&lt;p&gt;⚙️ The Technical Side: Why Zero Build?&lt;/p&gt;

&lt;p&gt;One of my most important architectural decisions was to avoid a traditional build pipeline.&lt;/p&gt;

&lt;p&gt;Locus Earth uses native JavaScript ES Modules.&lt;/p&gt;

&lt;p&gt;There is no bundler, transpiler, or complicated compilation process required to run the application.&lt;/p&gt;

&lt;p&gt;The project is essentially a static web application.&lt;/p&gt;

&lt;p&gt;This approach has several advantages:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The source code can be inspected directly.&lt;/li&gt;
&lt;li&gt;There is no build step before deployment.&lt;/li&gt;
&lt;li&gt;Changes can be tested quickly.&lt;/li&gt;
&lt;li&gt;Hosting is straightforward.&lt;/li&gt;
&lt;li&gt;Contributors can work with the actual source files.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The application also uses a Service Worker and Web App Manifest to provide PWA functionality.&lt;/p&gt;

&lt;p&gt;For deployment, it can be hosted on static hosting platforms such as GitHub Pages or Cloudflare Pages.&lt;/p&gt;

&lt;p&gt;📱 Offline Support&lt;/p&gt;

&lt;p&gt;Offline functionality was another feature I wanted to include.&lt;/p&gt;

&lt;p&gt;Locus Earth supports local caching of imagery tiles.&lt;/p&gt;

&lt;p&gt;Once an area has been visited and its imagery has been cached, users can revisit that area even without an active network connection.&lt;/p&gt;

&lt;p&gt;However, offline functionality has limitations:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Previously cached imagery can still be displayed.&lt;/li&gt;
&lt;li&gt;Terrain data still requires a network connection.&lt;/li&gt;
&lt;li&gt;3D buildings still require a network connection.&lt;/li&gt;
&lt;li&gt;Location search still requires a network connection.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The goal isn't to turn the entire globe into a fully offline application, but to make previously explored areas more accessible.&lt;/p&gt;

&lt;p&gt;📲 Bringing It to Android&lt;/p&gt;

&lt;p&gt;Although Locus Earth is fundamentally a web application, I also wanted to provide an Android installation option.&lt;/p&gt;

&lt;p&gt;Instead of rewriting the entire application in Kotlin or building a separate native mapping engine, I created a lightweight Android WebView wrapper.&lt;/p&gt;

&lt;p&gt;The APK essentially opens the online application in a fullscreen native window.&lt;/p&gt;

&lt;p&gt;It provides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A fullscreen experience without a browser address bar.&lt;/li&gt;
&lt;li&gt;Domain whitelisting.&lt;/li&gt;
&lt;li&gt;External links opened in the system browser.&lt;/li&gt;
&lt;li&gt;A simple first-launch explanation that the application is web-based.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And here's an interesting part:&lt;/p&gt;

&lt;p&gt;The Android application does not contain the actual mapping logic.&lt;/p&gt;

&lt;p&gt;The web application is still the main product, and its content is loaded online.&lt;/p&gt;

&lt;p&gt;This means that when I update the website, existing Android installations automatically receive the updated version.&lt;/p&gt;

&lt;p&gt;There is no need to rebuild or redistribute the APK for ordinary website updates.&lt;/p&gt;

&lt;p&gt;The Android wrapper only needs to be rebuilt when its own configuration changes, such as the application icon, package name, or allowed domains.&lt;/p&gt;

&lt;p&gt;The Android project is also included in the repository, so developers can build their own versions.&lt;/p&gt;

&lt;p&gt;🤖 Built with AI Assistance&lt;/p&gt;

&lt;p&gt;Locus Earth has been developed with assistance from several large language models.&lt;/p&gt;

&lt;p&gt;The models used during development include:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;DeepSeek-V4.1-Flash&lt;/li&gt;
&lt;li&gt;Hunyuan4&lt;/li&gt;
&lt;li&gt;ChatGPT-4o&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;AI assistance has been part of the development process, helping with implementation, debugging, and exploring possible solutions.&lt;/p&gt;

&lt;p&gt;However, the project still involves plenty of testing, integration, troubleshooting, and decisions about how different components should work together.&lt;/p&gt;

&lt;p&gt;Getting individual features to work is one thing. Making them work together reliably across different browsers and devices is another challenge entirely.&lt;/p&gt;

&lt;p&gt;🛠️ Technology Stack&lt;/p&gt;

&lt;p&gt;Here's a quick overview:&lt;/p&gt;

&lt;p&gt;Component| Technology&lt;br&gt;
3D Globe Engine| CesiumJS 1.118.2&lt;br&gt;
Architecture| Native JavaScript ES Modules&lt;br&gt;
Rendering| WebGL 2&lt;br&gt;
PWA| Service Worker + Web App Manifest&lt;br&gt;
Android| Native Android WebView wrapper&lt;br&gt;
Geographic Data| Cesium ion, OpenStreetMap, Natural Earth&lt;br&gt;
Imagery Providers| Multiple map providers&lt;br&gt;
Deployment| GitHub Pages / Cloudflare Pages&lt;/p&gt;

&lt;p&gt;The entire project is released under the MIT License.&lt;/p&gt;

&lt;p&gt;Both the web application and Android wrapper source code are available in the repository.&lt;/p&gt;

&lt;p&gt;🚀 Try It Yourself!&lt;/p&gt;

&lt;p&gt;You can access Locus Earth directly in your browser:&lt;/p&gt;

&lt;p&gt;GitHub Pages:&lt;br&gt;
&lt;a href="https://zhunemo.github.io/locus-earth/" rel="noopener noreferrer"&gt;https://zhunemo.github.io/locus-earth/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Cloudflare Pages:&lt;br&gt;
&lt;a href="https://locus-earth.pages.dev" rel="noopener noreferrer"&gt;https://locus-earth.pages.dev&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Source Code:&lt;br&gt;
&lt;a href="https://github.com/ZhuNemo/locus-earth" rel="noopener noreferrer"&gt;https://github.com/ZhuNemo/locus-earth&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For developers interested in contributing, modifying, or self-hosting the project, the repository also includes documentation covering development decisions, configuration, deployment, and Android APK builds.&lt;/p&gt;

&lt;p&gt;One important note: the API keys included in the repository are restricted to the project's own domains. If you fork or deploy your own instance, you'll need to obtain and configure your own API keys.&lt;/p&gt;

&lt;p&gt;Final Thoughts&lt;/p&gt;

&lt;p&gt;Locus Earth started as a personal project, but it gradually grew into something much more substantial.&lt;/p&gt;

&lt;p&gt;There were plenty of challenges along the way: rendering compatibility, mobile browser behavior, integrating different geographic data sources, caching strategies, and making the interface work well on different screen sizes.&lt;/p&gt;

&lt;p&gt;It's still an independently maintained project, and there is always room for improvement.&lt;/p&gt;

&lt;p&gt;For now, I'm happy with where it has arrived.&lt;/p&gt;

&lt;p&gt;If you're interested in 3D maps, CesiumJS, geospatial visualization, or just want to explore an alternative browser-based globe, give it a try!&lt;/p&gt;

&lt;p&gt;Happy exploring! 🌍&lt;/p&gt;

</description>
      <category>webgl</category>
      <category>javascript</category>
      <category>cesium</category>
      <category>opensource</category>
    </item>
    <item>
      <title>[Boost]</title>
      <dc:creator>Nemo</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:42:02 +0000</pubDate>
      <link>https://dev.to/zhunemo/-46e6</link>
      <guid>https://dev.to/zhunemo/-46e6</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb" class="crayons-story__hidden-navigation-link"&gt;How I used AI to build a lightweight open-source 3D Earth with CesiumJS&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/zhunemo" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176240%2F254a0443-612c-4d0d-a8f7-f823db005856.jpg" alt="zhunemo profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/zhunemo" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Nemo
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Nemo
                
                
              
              &lt;div id="story-author-preview-content-4831397" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/zhunemo" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4176240%2F254a0443-612c-4d0d-a8f7-f823db005856.jpg" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Nemo&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Oct 11&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb" id="article-link-4831397"&gt;
          How I used AI to build a lightweight open-source 3D Earth with CesiumJS
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag crayons-tag--filled  " href="/t/showdev"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;showdev&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/ai"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;ai&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/javascript"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;javascript&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/cesium"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;cesium&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
          &lt;a href="https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left"&gt;
            &lt;div class="multiple_reactions_aggregate"&gt;
              &lt;span class="multiple_reactions_icons_container"&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/exploding-head-daceb38d627e6ae9b730f36a1e390fca556a4289d5a41abb2c35068ad3e2c4b5.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/multi-unicorn-b44d6f8c23cdd00964192bedc38af3e82463978aa611b4365bd33a0f1f4f3e97.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
                  &lt;span class="crayons_icon_container"&gt;
                    &lt;img src="https://assets.dev.to/assets/sparkle-heart-5f9bee3767e18deb1bb725290cb151c25234768a0e9a2bd39370c382d02920cf.svg" width="18" height="18"&gt;
                  &lt;/span&gt;
              &lt;/span&gt;
              &lt;span class="aggregate_reactions_counter"&gt;6&lt;span class="hidden s:inline"&gt;&amp;nbsp;reactions&lt;/span&gt;&lt;/span&gt;
            &lt;/div&gt;
          &lt;/a&gt;
            &lt;a href="https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              

              4&lt;span class="hidden s:inline"&gt;&amp;nbsp;comments&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            2 min read
          &lt;/small&gt;
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>ai</category>
      <category>javascript</category>
      <category>opensource</category>
      <category>showdev</category>
    </item>
    <item>
      <title>How I used AI to build a lightweight open-source 3D Earth with CesiumJS</title>
      <dc:creator>Nemo</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:41:42 +0000</pubDate>
      <link>https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb</link>
      <guid>https://dev.to/zhunemo/how-i-used-ai-to-build-a-lightweight-open-source-3d-earth-with-cesiumjs-42hb</guid>
      <description>&lt;p&gt;Hi Dev Community! 👋&lt;/p&gt;

&lt;p&gt;I've been working on an open-source project called &lt;strong&gt;Locus-Earth&lt;/strong&gt; recently. It's a lightweight, browser-based interactive 3D Earth built with CesiumJS.&lt;/p&gt;

&lt;p&gt;Instead of just dropping a link, I want to share some features and the development process behind it.&lt;/p&gt;

&lt;h2&gt;
  
  
  ✨ What's new in the recent update?
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Multi-basemap Switching&lt;/strong&gt;: Sentinel-2, Blue Marble, night lights, TianDiTu, Tencent Maps, etc.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Interactive Tools&lt;/strong&gt;: Distance/Area measurement (snapped to terrain), markers, and browser-local favorites (import/export supported).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Location Search&lt;/strong&gt;: Just type a place name to fly there.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Scene Integration&lt;/strong&gt;: Auto high-precision city models when entering Denver, Washington D.C., Sydney, etc. Street View appears when entering mainland China!&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI/UX&lt;/strong&gt;: Day/night lighting, white model toggle, dark/light theme, compass, draggable floating toolbar (adapted for mobile).&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  🚀 Tech Stack &amp;amp; Acknowledgements
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;Details&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Engine&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CesiumJS 1.118&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Architecture&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Native ES Modules, Zero build step&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Form&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;PWA (Service Worker + Manifest)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;AI Assistance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;DeepSeek, GitHub Copilot, Tencent Hunyuan&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Data Sources:&lt;/strong&gt; &lt;a href="https://cesium.com/ion/" rel="noopener noreferrer"&gt;Cesium ion&lt;/a&gt;, &lt;a href="https://www.openstreetmap.org/" rel="noopener noreferrer"&gt;OpenStreetMap&lt;/a&gt;, &lt;a href="https://www.naturalearthdata.com/" rel="noopener noreferrer"&gt;Natural Earth&lt;/a&gt;, &lt;a href="https://www.tianditu.gov.cn/" rel="noopener noreferrer"&gt;Tianditu&lt;/a&gt;, &lt;a href="https://map.qq.com/" rel="noopener noreferrer"&gt;Tencent Maps&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Special Thanks:&lt;/strong&gt; Tencent Street View uses a community-maintained third-party viewer, &lt;a href="https://qq-map.netlify.app" rel="noopener noreferrer"&gt;qq-map&lt;/a&gt;, to open panoramas (not an official Tencent service). The coordinate transformation logic can be found in &lt;code&gt;js/coord-transform.js&lt;/code&gt; (two-way conversion between WGS-84 and GCJ-02).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03o7yz1fgvavyrlij8vs.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F03o7yz1fgvavyrlij8vs.jpg" alt=" " width="800" height="1778"&gt;&lt;/a&gt;&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxor0fffg2msc75vzfwok.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fxor0fffg2msc75vzfwok.jpg" alt=" " width="800" height="1778"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  🔗 Links
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;GitHub Repo&lt;/strong&gt;: &lt;a href="https://github.com/ZhuNemo/locus-earth" rel="noopener noreferrer"&gt;ZhuNemo/locus-earth&lt;/a&gt; (MIT License) 
&lt;em&gt;(Note: Since the website runs on Cesium ion's free tier, the demo has a limited monthly quota. If it goes down, please run it locally or check the screenshots in the repo!)&lt;/em&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Any feedback or contributions are highly appreciated! 😊&lt;/p&gt;

</description>
      <category>ai</category>
      <category>javascript</category>
      <category>cesium</category>
      <category>showdev</category>
    </item>
  </channel>
</rss>
