// read map origin, update MapOrigin
        bool CreateOrUpdateMapOrigin(Map apolloMap, MapOrigin mapOrigin)
        {
            var header       = apolloMap.header;
            var geoReference = header.projection.proj;
            var items        = geoReference.Split('+')
                               .Select(s => s.Split('='))
                               .Where(s => s.Length > 1)
                               .ToDictionary(element => element[0].Trim(), element => element[1].Trim());

            if (!items.ContainsKey("proj") || items["proj"] != "utm")
            {
                return(false);
            }

            double latitude, longitude;

            longitude = (header.left + header.right) / 2;
            latitude  = (header.top + header.bottom) / 2;

            int zoneNumber;

            if (items.ContainsKey("zone"))
            {
                zoneNumber = int.Parse(items["zone"]);
            }
            else
            {
                zoneNumber = MapOrigin.GetZoneNumberFromLatLon(latitude, longitude);
            }

            mapOrigin.UTMZoneId = zoneNumber;
            mapOrigin.FromLatitudeLongitude(latitude, longitude, out mapOrigin.OriginNorthing, out mapOrigin.OriginEasting);

            return(true);
        }
Beispiel #2
0
        void OnGUI()
        {
            GUILayout.Space(10);
            if (GUILayout.Button("Open Google Maps \u2316"))
            {
                Application.OpenURL($"https://www.google.com/maps/@{latitude},{longitude},15z");
            }
            GUILayout.Space(10);
            latitude  = EditorGUILayout.DoubleField("Latitude", latitude);
            longitude = EditorGUILayout.DoubleField("Longitude", longitude);
            GUILayout.Space(10);

            if (GUILayout.Button("Import Coordinates"))
            {
                origin.UTMZoneId = MapOrigin.GetZoneNumberFromLatLon(latitude, longitude);
                origin.FromLatitudeLongitude(latitude, longitude, out var northing, out var easting);
                origin.OriginNorthing = Math.Round(northing, 2);
                origin.OriginEasting  = Math.Round(easting, 2);
                this.Close();
            }
        }