{"id":32306434,"url":"https://github.com/sun-jiao/geoxml","last_synced_at":"2026-02-20T09:31:47.050Z","repository":{"id":164340647,"uuid":"639780972","full_name":"sun-jiao/geoxml","owner":"sun-jiao","description":"A Dart library for loading, manipulating, and saving GPS data in XML format, including GPX and KML.","archived":false,"fork":false,"pushed_at":"2025-03-29T14:04:02.000Z","size":557,"stargazers_count":41,"open_issues_count":0,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-29T14:31:31.161Z","etag":null,"topics":["dart-library","geocoding","geolocation","gpx","kml","xml"],"latest_commit_sha":null,"homepage":"https://pub.dev/packages/geoxml","language":"Dart","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sun-jiao.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-05-12T08:01:28.000Z","updated_at":"2025-03-29T14:04:05.000Z","dependencies_parsed_at":null,"dependency_job_id":"1d042ac0-bbe0-4a79-9460-9e9be5e5ea71","html_url":"https://github.com/sun-jiao/geoxml","commit_stats":{"total_commits":85,"total_committers":8,"mean_commits":10.625,"dds":0.4117647058823529,"last_synced_commit":"159a641ec209331dd946ad703a671954e1d519c2"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/sun-jiao/geoxml","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sun-jiao%2Fgeoxml","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sun-jiao%2Fgeoxml/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sun-jiao%2Fgeoxml/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sun-jiao%2Fgeoxml/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sun-jiao","download_url":"https://codeload.github.com/sun-jiao/geoxml/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sun-jiao%2Fgeoxml/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29647670,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-20T09:27:29.698Z","status":"ssl_error","status_checked_at":"2026-02-20T09:26:12.373Z","response_time":59,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["dart-library","geocoding","geolocation","gpx","kml","xml"],"created_at":"2025-10-23T07:03:01.121Z","updated_at":"2026-02-20T09:31:47.045Z","avatar_url":"https://github.com/sun-jiao.png","language":"Dart","funding_links":[],"categories":[],"sub_categories":[],"readme":"geoxml\n======\n\n[![Pub Package](https://img.shields.io/pub/v/geoxml.svg)](https://pub.dev/packages/geoxml)\n[![Coverage Status](https://coveralls.io/repos/github/sun-jiao/geoxml/badge.svg?branch=main)](https://coveralls.io/github/sun-jiao/geoxml?branch=main)\n[![GitHub Issues](https://img.shields.io/github/issues/sun-jiao/geoxml.svg?branch=master)](https://github.com/sun-jiao/geoxml/issues)\n[![GitHub Forks](https://img.shields.io/github/forks/sun-jiao/geoxml.svg?branch=master)](https://github.com/sun-jiao/geoxml/network)\n[![GitHub Stars](https://img.shields.io/github/stars/sun-jiao/geoxml.svg?branch=master)](https://github.com/sun-jiao/geoxml/stargazers)\n[![GitHub License](https://img.shields.io/badge/license-Apache%202-blue.svg)](https://raw.githubusercontent.com/sun-jiao/geoxml/master/LICENSE)\n\nA Dart library for loading, manipulating, and saving GPS data in XML format, including GPX and KML.\n\nGPX is a light-weight XML data format for the interchange of GPS data - waypoints, routes, \nand tracks. KML is a XML data format used to display geographic data in an Earth browser \nsuch as Google Earth.\n\nThe GPX document: https://www.topografix.com/gpx.asp.\nAnd for KML, see https://developers.google.com/kml/ .\n\nThe project is originally authored by @kb0 with others, thanks for their works.\n\n## Limitations\n\nThis is just an initial version of the package. There are still some limitations:\n\n- No support for GPX 1.0.\n- Doesn't validate schema declarations.\n- Some KML elements and attributes are not implemented.\n- The conversion between GPX and KML is lossy. For example, GPX does not contain style information such as color, while KML can not tell the difference between routes and tracks. Converting a GPX to KML and then converting it back cannot obtain the original GPX.\n\n## Getting Started\n\nIn your dart/flutter project add the dependency:\n\n```\n dependencies:\n   ...\n   geoxml: ^2.5.3\n```\n\n### Reading GPX\n\nTo read GPX input use the GpxReader object and function `GeoXml.fromGpxString(String input)`:\n\n```dart\nimport 'package:geoxml/geoxml.dart';\n\nmain() async {\n  // create gpx from xml string\n  var xmlGpx = await GeoXml.fromGpxString('\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e'\n      '\u003cgpx version=\"1.1\" creator=\"dart-gpx library\"\u003e'\n      '\u003cwpt lat=\"-25.7996\" lon=\"-62.8666\"\u003e\u003cele\u003e10.0\u003c/ele\u003e\u003cname\u003eMonte Quemado\u003c/name\u003e\u003cdesc\u003eArgentina\u003c/desc\u003e\u003c/wpt\u003e'\n      '\u003c/gpx\u003e');\n\n  print(xmlGpx);\n  print(xmlGpx.wpts);\n}\n```\n\nTo read GPX from a `Stream\u003cString\u003e`:\n\n```dart\nimport 'package:geoxml/geoxml.dart';\n\nmain() async {\n  // create gpx from xml string stream\n  final stream = File('test/assets/wpt.gpx').openRead()\n      .transform(utf8.decoder);\n  final xmlGpx = await GeoXml.fromGpxStream(stream);\n\n  print(xmlGpx);\n  print(xmlGpx.wpts);\n}\n```\n\n### Writing GPX\n\nTo write object to GPX use the method `asGpxString(Gpx gpx, {bool pretty = false})`:\n\n```dart\nimport 'package:geoxml/geoxml.dart';\n\nmain() {\n  // create gpx object\n  var gpx = Gpx();\n  gpx.creator = \"dart-gpx library\";\n  gpx.wpts = [\n    Wpt(lat: 36.62, lon: 101.77, ele: 10.0, name: 'Xining', desc: 'China'),\n  ];\n\n  // generate xml string\n  var gpxString = gpx.asGpxString(pretty: true);\n  print(gpxString);\n}\n```\n\n### Reading KML\n\nTo read KML input use the KmlReader object and function `GeoXml.fromKmlString(String input)`:\n\n```dart\nimport 'package:geoxml/geoxml.dart';\n\nmain() async {\n  // create gpx from xml string\n  var xmlKml = await GeoXml.fromKmlString('\u003c?xml version=\"1.0\" encoding=\"UTF-8\"?\u003e '\n      '\u003ckml xmlns=\"http://www.opengis.net/kml/2.2\"\u003e\u003cDocument\u003e\u003cPlacemark\u003e\u003cname\u003eMonte Quemado\u003c/name\u003e'\n      '\u003cdescription\u003eArgentina\u003c/description\u003e \u003cExtendedData/\u003e'\n      '\u003cPoint\u003e\u003caltitudeMode\u003eabsolute\u003c/altitudeMode\u003e'\n      '\u003ccoordinates\u003e-62.8666,-25.7996,10.0\u003c/coordinates\u003e\u003c/Point\u003e\u003c/Placemark\u003e'\n      '\u003c/Document\u003e\u003c/kml\u003e');\n\n  print(xmlKml);\n  print(xmlKml.wpts);\n}\n```\n\nTo read KML from a `Stream\u003cString\u003e`:\n\n```dart\nimport 'package:geoxml/geoxml.dart';\n\nmain() async {\n  // create gpx from xml string stream\n  final stream = File('test/assets/wpt.kml').openRead()\n      .transform(utf8.decoder);\n  final kml = await GeoXml.fromKmlStream(stream);\n\n  print(xmlGpx);\n  print(xmlGpx.wpts);\n}\n```\n\n### Writing KML\n\nTo export object to KML use the method `asKmlString({bool pretty = false})`:\n\n```dart\nimport 'package:geoxml/geoxml.dart';\n\nmain() {\n  // create gpx object\n  var geoXml = GeoXml();\n  geoXml.creator = \"dart geoxml library\";\n  geoXml.wpts = [\n    Wpt(lat: 36.62, lon: 101.77, ele: 10.0, name: 'Xining', desc: 'China'),\n  ];\n\n  // generate xml string\n  var kmlString = geoXml.asKmlString(pretty: true);\n  print(kmlString);\n\n  // generate xml string with altitude mode - clampToGround\n  var kmlString = KmlWriter(altitudeMode: AltitudeMode.clampToGround)\n      .asString(gpx, pretty: true);\n  print(kmlString);\n}\n```\n\n## Features and bugs\n\nPlease file feature requests and bugs at the [issue tracker][tracker].\n\n[tracker]: https://github.com/sun-jiao/geoxml/issues\n\n### License\n\nThe Apache 2.0 License, see [LICENSE](https://github.com/sun-jiao/geoxml/raw/main/LICENSE).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsun-jiao%2Fgeoxml","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsun-jiao%2Fgeoxml","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsun-jiao%2Fgeoxml/lists"}