// 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); }
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(); } }