// niantic_lightship_maps_core.proto // Reconstructed from com.nianticlabs.pokemongo 0.431.0 (versionCode 2026092402, arm64-v8a). // Field numbers were recovered from the compiled parsers; names come from the C# types, // so some may differ from Niantic's originals. Study material, not an official API. syntax = "proto3"; package niantic.lightship.maps.core; message BoundingRect { double north = 1; double south = 2; double east = 3; double west = 4; } message BuildingMetadata { int32 height_meters = 1; bool is_underground = 2; } message Feature { ProtoFeatureKind feature_kind = 1; Geometry geometry = 2; Label label = 3; bool is_private = 7; oneof metadata { BuildingMetadata building_metadata = 4; RoadMetadata road_metadata = 5; TransitMetadata transit_metadata = 6; } } enum FeatureKind { FEATURE_KIND_KIND_UNDEFINED = 0; FEATURE_KIND_KIND_AIRPORT = 68; FEATURE_KIND_KIND_BASIN = 1; FEATURE_KIND_KIND_BAY = 69; FEATURE_KIND_KIND_BOROUGH = 70; FEATURE_KIND_KIND_CANAL = 2; FEATURE_KIND_KIND_CEMETERY = 3; FEATURE_KIND_KIND_CINEMA = 4; FEATURE_KIND_KIND_CITY = 66; FEATURE_KIND_KIND_COLLEGE = 5; FEATURE_KIND_KIND_COMMERCIAL = 6; FEATURE_KIND_KIND_COMMON = 7; FEATURE_KIND_KIND_COUNTRY = 64; FEATURE_KIND_KIND_DAM = 8; FEATURE_KIND_KIND_DITCH = 9; FEATURE_KIND_KIND_DOCK = 10; FEATURE_KIND_KIND_DRAIN = 11; FEATURE_KIND_KIND_FARM = 12; FEATURE_KIND_KIND_FARMLAND = 13; FEATURE_KIND_KIND_FARMYARD = 14; FEATURE_KIND_KIND_FJORD = 71; FEATURE_KIND_KIND_FOOTWAY = 15; FEATURE_KIND_KIND_FOREST = 16; FEATURE_KIND_KIND_GARDEN = 17; FEATURE_KIND_KIND_GLACIER = 18; FEATURE_KIND_KIND_GOLF_COURSE = 19; FEATURE_KIND_KIND_GRASS = 20; FEATURE_KIND_KIND_HAMLET = 72; FEATURE_KIND_KIND_HIGHWAY = 21; FEATURE_KIND_KIND_HOSPITAL = 22; FEATURE_KIND_KIND_HOTEL = 23; FEATURE_KIND_KIND_INDUSTRIAL = 24; FEATURE_KIND_KIND_LAKE = 25; FEATURE_KIND_KIND_LAND = 26; FEATURE_KIND_KIND_LIBRARY = 27; FEATURE_KIND_KIND_LIGHT_RAIL = 87; FEATURE_KIND_KIND_MAJOR_ROAD = 28; FEATURE_KIND_KIND_MEADOW = 29; FEATURE_KIND_KIND_MILITARY = 73; FEATURE_KIND_KIND_MINOR_ROAD = 30; FEATURE_KIND_KIND_NATIONAL_PARK = 74; FEATURE_KIND_KIND_NATURE_RESERVE = 31; FEATURE_KIND_KIND_NEIGHBORHOOD = 75; FEATURE_KIND_KIND_OCEAN = 32; FEATURE_KIND_KIND_PARK = 33; FEATURE_KIND_KIND_PARKING = 34; FEATURE_KIND_KIND_PATH = 35; FEATURE_KIND_KIND_PEAK = 76; FEATURE_KIND_KIND_PEDESTRIAN = 36; FEATURE_KIND_KIND_PITCH = 37; FEATURE_KIND_KIND_PLACE_OF_WORSHIP = 38; FEATURE_KIND_KIND_PLAYA = 39; FEATURE_KIND_KIND_PLATFORM = 88; FEATURE_KIND_KIND_PLAYGROUND = 40; FEATURE_KIND_KIND_PRISON = 77; FEATURE_KIND_KIND_PROTECTED_AREA = 78; FEATURE_KIND_KIND_QUARRY = 41; FEATURE_KIND_KIND_RAILWAY = 42; FEATURE_KIND_KIND_RECREATION_AREA = 43; FEATURE_KIND_KIND_REEF = 79; FEATURE_KIND_KIND_REGION = 65; FEATURE_KIND_KIND_RESERVOIR = 44; FEATURE_KIND_KIND_RESIDENTIAL = 45; FEATURE_KIND_KIND_RETAIL = 46; FEATURE_KIND_KIND_RIVER = 47; FEATURE_KIND_KIND_RIVERBANK = 48; FEATURE_KIND_KIND_ROCK = 80; FEATURE_KIND_KIND_RUNWAY = 49; FEATURE_KIND_KIND_SAND = 81; FEATURE_KIND_KIND_SCHOOL = 50; FEATURE_KIND_KIND_SCRUB = 82; FEATURE_KIND_KIND_SEA = 83; FEATURE_KIND_KIND_SPORTS_CENTER = 51; FEATURE_KIND_KIND_STADIUM = 52; FEATURE_KIND_KIND_STATION = 89; FEATURE_KIND_KIND_STRAIT = 84; FEATURE_KIND_KIND_STREAM = 53; FEATURE_KIND_KIND_SUBWAY = 90; FEATURE_KIND_KIND_TAXIWAY = 54; FEATURE_KIND_KIND_THEATRE = 55; FEATURE_KIND_KIND_TOWN = 67; FEATURE_KIND_KIND_UNIVERSITY = 56; FEATURE_KIND_KIND_URBAN_AREA = 57; FEATURE_KIND_KIND_VALLEY = 85; FEATURE_KIND_KIND_VILLAGE = 86; FEATURE_KIND_KIND_WATER = 58; FEATURE_KIND_KIND_WETLAND = 59; FEATURE_KIND_KIND_WOOD = 60; FEATURE_KIND_KIND_DEBUG_TILE_OUTLINE = 61; FEATURE_KIND_KIND_DEBUG_TILE_SURFACE = 62; FEATURE_KIND_KIND_OTHER = 63; } message Geometry { oneof geometry { PointList points = 1; PolylineList polylines = 2; TriangleList triangles = 3; } } message GmmSettings { repeated LayerRule layer_rules = 1; } message Label { int32 min_zoom = 1; int32 max_zoom = 2; int32 priority = 3; repeated LabelContentLocalization localizations = 4; } message LabelContentLocalization { string language = 1; string name = 2; } message Layer { LayerKind layer_kind = 1; repeated Feature features = 2; } enum LayerKind { LAYER_KIND_LAYER_UNDEFINED = 0; LAYER_KIND_LAYER_BOUNDARIES = 1; LAYER_KIND_LAYER_BUILDINGS = 2; LAYER_KIND_LAYER_LANDUSE = 4; LAYER_KIND_LAYER_PLACES = 5; LAYER_KIND_LAYER_ROADS = 7; LAYER_KIND_LAYER_TRANSIT = 8; LAYER_KIND_LAYER_WATER = 9; LAYER_KIND_LAYER_BIOME = 11; } message LayerRule { GmmLayerType type = 1; repeated MaskedColor fill_colors = 2; repeated GmmRoadPriority road_priority = 3; uint32 road_attribute_bitfield = 4; MapLayer layer = 5; FeatureKind kind = 6; enum GmmLayerType { GMM_LAYER_TYPE_AREA = 0; GMM_LAYER_TYPE_ROAD = 1; GMM_LAYER_TYPE_BUILDING = 2; GMM_LAYER_TYPE_LINE_MESH = 3; } enum GmmRoadPriority { GMM_ROAD_PRIORITY_PRIORITY_NONE = 0; GMM_ROAD_PRIORITY_PRIORITY_TERMINAL = 1; GMM_ROAD_PRIORITY_PRIORITY_LOCAL = 2; GMM_ROAD_PRIORITY_PRIORITY_MINOR_ARTERIAL = 3; GMM_ROAD_PRIORITY_PRIORITY_MAJOR_ARTERIAL = 4; GMM_ROAD_PRIORITY_PRIORITY_SECONDARY_ROAD = 5; GMM_ROAD_PRIORITY_PRIORITY_PRIMARY_HIGHWAY = 6; GMM_ROAD_PRIORITY_PRIORITY_LIMITED_ACCESS = 7; GMM_ROAD_PRIORITY_PRIORITY_CONTROLLED_ACCESS = 8; GMM_ROAD_PRIORITY_PRIORITY_NON_TRAFFIC = 9; } } message MapArea { string description = 1; int32 epoch = 2; string map_provider = 3; repeated BoundingRect bounding_rect = 4; repeated string blocked_label_name = 5; string minimum_client_version = 6; bytes tile_encryption_key = 7; } message MapCompositionRoot { repeated MapArea map_area = 1; repeated MapProvider map_provider = 2; repeated NamedMapSettings named_map_settings = 3; repeated MapArea biome_map_area = 4; } enum MapLayer { MAP_LAYER_LAYER_UNDEFINED = 0; MAP_LAYER_LAYER_BOUNDARIES = 1; MAP_LAYER_LAYER_BUILDINGS = 2; MAP_LAYER_LAYER_LANDMASS = 3; MAP_LAYER_LAYER_LANDUSE = 4; MAP_LAYER_LAYER_PLACES = 5; MAP_LAYER_LAYER_POIS = 6; MAP_LAYER_LAYER_ROADS = 7; MAP_LAYER_LAYER_TRANSIT = 8; MAP_LAYER_LAYER_WATER = 9; MAP_LAYER_LAYER_DEBUG_TILE_BOUNDARIES = 10; } message MapProvider { string name = 1; string base_url = 2; string query_format = 3; MapType map_type = 6; bool hide_attribution = 7; int32 min_tile_level = 8; int32 max_tile_level = 9; repeated BundleZoomRange bundle_zoom_range = 10; oneof settings { GmmSettings gmm_settings = 4; string settings_name = 5; } message BundleZoomRange { int32 min_zoom = 1; int32 max_zoom = 2; int32 request_zoom_offset = 3; } enum MapType { MAP_TYPE_UNSET = 0; MAP_TYPE_GMM = 1; MAP_TYPE_OSM = 2; MAP_TYPE_BLANK = 3; MAP_TYPE_GMM_BUNDLE = 4; MAP_TYPE_NIANTIC_BUNDLE = 5; MAP_TYPE_BIOME_RASTER = 6; } } message MapTile { int32 zoom = 1; int32 x = 2; int32 y = 3; repeated Layer layers = 4; } message MapTileBundle { int32 format_version = 1; int32 tile_zoom = 2; int32 bundle_zoom = 3; int32 bundle_x = 4; int32 bundle_y = 5; int32 epoch = 6; repeated MapTile tiles = 7; } message MaskedColor { uint32 color_argb = 1; uint32 color_mask_argb = 2; } message NamedMapSettings { string name = 1; GmmSettings gmm_settings = 2; } message PointList { repeated fixed32 coords = 1; } message Polyline { repeated fixed32 coords = 1; } message PolylineList { repeated Polyline polylines = 1; } enum ProtoFeatureKind { PROTO_FEATURE_KIND_KIND_UNDEFINED = 0; PROTO_FEATURE_KIND_KIND_AGRICULTURAL = 91; PROTO_FEATURE_KIND_KIND_AIRPORT = 68; PROTO_FEATURE_KIND_KIND_BASIN = 1; PROTO_FEATURE_KIND_KIND_BAY = 69; PROTO_FEATURE_KIND_KIND_BOROUGH = 70; PROTO_FEATURE_KIND_KIND_CANAL = 2; PROTO_FEATURE_KIND_KIND_CEMETERY = 3; PROTO_FEATURE_KIND_KIND_CITY = 66; PROTO_FEATURE_KIND_KIND_COMMERCIAL = 6; PROTO_FEATURE_KIND_KIND_COUNTRY = 64; PROTO_FEATURE_KIND_KIND_DITCH = 9; PROTO_FEATURE_KIND_KIND_DRAIN = 11; PROTO_FEATURE_KIND_KIND_EDUCATION = 92; PROTO_FEATURE_KIND_KIND_FARM = 12; PROTO_FEATURE_KIND_KIND_FARMLAND = 13; PROTO_FEATURE_KIND_KIND_FJORD = 71; PROTO_FEATURE_KIND_KIND_FOREST = 16; PROTO_FEATURE_KIND_KIND_GARDEN = 17; PROTO_FEATURE_KIND_KIND_GLACIER = 18; PROTO_FEATURE_KIND_KIND_GOLF_COURSE = 19; PROTO_FEATURE_KIND_KIND_GOVERNMENT = 93; PROTO_FEATURE_KIND_KIND_GRASS = 20; PROTO_FEATURE_KIND_KIND_HAMLET = 72; PROTO_FEATURE_KIND_KIND_HEALTHCARE = 94; PROTO_FEATURE_KIND_KIND_HIGHWAY = 21; PROTO_FEATURE_KIND_KIND_HOTEL = 23; PROTO_FEATURE_KIND_KIND_INDUSTRIAL = 24; PROTO_FEATURE_KIND_KIND_LAKE = 25; PROTO_FEATURE_KIND_KIND_LANDMARK = 95; PROTO_FEATURE_KIND_KIND_LIGHT_RAIL = 87; PROTO_FEATURE_KIND_KIND_MAJOR_ROAD = 28; PROTO_FEATURE_KIND_KIND_MEADOW = 29; PROTO_FEATURE_KIND_KIND_MILITARY = 73; PROTO_FEATURE_KIND_KIND_MINOR_ROAD = 30; PROTO_FEATURE_KIND_KIND_NATIONAL_PARK = 74; PROTO_FEATURE_KIND_KIND_NATURE_RESERVE = 31; PROTO_FEATURE_KIND_KIND_NEIGHBORHOOD = 75; PROTO_FEATURE_KIND_KIND_OCEAN = 32; PROTO_FEATURE_KIND_KIND_ORCHARD = 103; PROTO_FEATURE_KIND_KIND_OTHER = 63; PROTO_FEATURE_KIND_KIND_PARK = 33; PROTO_FEATURE_KIND_KIND_PARKING = 34; PROTO_FEATURE_KIND_KIND_PATH = 35; PROTO_FEATURE_KIND_KIND_PEAK = 76; PROTO_FEATURE_KIND_KIND_PEDESTRIAN = 36; PROTO_FEATURE_KIND_KIND_PIER = 102; PROTO_FEATURE_KIND_KIND_PITCH = 37; PROTO_FEATURE_KIND_KIND_PLAYA = 39; PROTO_FEATURE_KIND_KIND_PLAYGROUND = 40; PROTO_FEATURE_KIND_KIND_PLATFORM = 88; PROTO_FEATURE_KIND_KIND_PRISON = 77; PROTO_FEATURE_KIND_KIND_PROTECTED_AREA = 78; PROTO_FEATURE_KIND_KIND_QUARRY = 41; PROTO_FEATURE_KIND_KIND_RAILWAY = 42; PROTO_FEATURE_KIND_KIND_RECREATION_AREA = 43; PROTO_FEATURE_KIND_KIND_REEF = 79; PROTO_FEATURE_KIND_KIND_REGION = 65; PROTO_FEATURE_KIND_KIND_RELIGIOUS = 96; PROTO_FEATURE_KIND_KIND_RESIDENTIAL = 45; PROTO_FEATURE_KIND_KIND_RETAIL = 46; PROTO_FEATURE_KIND_KIND_RIVER = 47; PROTO_FEATURE_KIND_KIND_RIVERBANK = 48; PROTO_FEATURE_KIND_KIND_ROCK = 80; PROTO_FEATURE_KIND_KIND_RUNWAY = 49; PROTO_FEATURE_KIND_KIND_SAND = 81; PROTO_FEATURE_KIND_KIND_SCHOOL = 50; PROTO_FEATURE_KIND_KIND_SCRUB = 82; PROTO_FEATURE_KIND_KIND_SEA = 83; PROTO_FEATURE_KIND_KIND_SERVICES = 97; PROTO_FEATURE_KIND_KIND_SPORTS = 98; PROTO_FEATURE_KIND_KIND_STATION = 89; PROTO_FEATURE_KIND_KIND_STRAIT = 84; PROTO_FEATURE_KIND_KIND_STREAM = 53; PROTO_FEATURE_KIND_KIND_SUBWAY = 90; PROTO_FEATURE_KIND_KIND_TAXIWAY = 54; PROTO_FEATURE_KIND_KIND_TOWN = 67; PROTO_FEATURE_KIND_KIND_TRANSPORTATION = 99; PROTO_FEATURE_KIND_KIND_UNUSED = 100; PROTO_FEATURE_KIND_KIND_VALLEY = 85; PROTO_FEATURE_KIND_KIND_VILLAGE = 86; PROTO_FEATURE_KIND_KIND_VINEYARD = 104; PROTO_FEATURE_KIND_KIND_WATER = 58; PROTO_FEATURE_KIND_KIND_WETLAND = 59; PROTO_FEATURE_KIND_KIND_WOOD = 60; PROTO_FEATURE_KIND_KIND_BIOME = 101; } message RoadMetadata { bool is_tunnel = 1; bool railway_is_siding = 2; string network = 3; string shield_text = 4; string route = 5; } message TiledBlob { int32 format_version = 1; int32 zoom = 2; int32 x = 3; int32 y = 4; int32 epoch = 5; bytes encoded_data = 6; ContentType content_type = 7; enum ContentType { CONTENT_TYPE_NIANTIC_VECTOR_MAPTILE = 0; CONTENT_TYPE_BIOME_RASTER_MAPTILE = 1; } } message TransitMetadata { string route = 1; string agency = 2; string color_name = 3; } message TriangleList { repeated fixed32 coords = 3; bytes exterior_edges = 4; enum ExteriorEdgeBit { EXTERIOR_EDGE_BIT_NO_BIT = 0; EXTERIOR_EDGE_BIT_EDGE_V0_V1 = 1; EXTERIOR_EDGE_BIT_EDGE_V1_V2 = 2; EXTERIOR_EDGE_BIT_EDGE_V2_V0 = 4; } }