Forked from https://github.com/mapbox/tokml
tokml
Convert GeoJSON to KML.
What's different in this fork?
This fork changes each <Style>
node to include <IconStyle>
, <LineStyle>
and <PolyStyle>
nodes, each
with an appropriate <color>
node. All <Placemark>
nodes have a styleHash
associated with them so the styles
apply to each shape. This approach supports Fulcrum data,
which can contain multiple geometry types (Point, LineString, Polygon, MultiPoint, MultiLineString, MultiPolygon)
within the same file, and seems to apply colors correctly (in most tools).
The parent (and original) projects used a
mapbox.com
url for the href
in <Icon>
nodes. This url may have intended to return an icon, but it appears to no
longer be (publicly) accessible. A new iconUrl
option has been introduced to allow using a different url, however this
url will apply to all <Style><IconStyle><Icon>
nodes, which may cause Point data to show in the incorrect color.
Usage
with node/browserify
npm install --save @fulcrumapp/tokml
otherwise:
wget https://raw.github.com/fulcrumapp/tokml/master/tokml.js
as a binary:
npm install -g @fulcrumapp/tokml
tokml file.geojson > file.kml
tokml < file.geojson > file.kml
Importing
ESM
import * as tokml from "@fulcrumapp/tokml"
CommonJS
var tokml = require('@fulcrumapp/tokml')
Browser
You can also load the built tokml.js
file directly in a browser script tag and access it globally as tokml()
Example
var kml = tokml(geojsonObject);
var kmlNameDescription = tokml(geojsonObject, {
name: "name",
description: "description",
});
var kmlDocumentName = tokml(geojsonObject, {
documentName: "My List Of Markers",
documentDescription: "One of the many places you are not I am",
});
API
tokml(geojsonObject, [options])
Given GeoJSON data as an object, return KML data as a
string of XML.
options
is an optional object that takes the following options:
The property to name/description mapping: while GeoJSON supports freeform
properties
on each feature, KML has an expectation of name
and description
properties that are often styled and displayed automatically. These options let
you define a mapping from the GeoJSON style to KML's.
name
: the name of the property in each GeoJSON Feature that contains
the feature's namedescription
: the name of the property in each GeoJSON Feature that contains
the feature's description
Timestamp: KML can associate features with a moment in time via the TimeStamp
tag. GeoJSON doesn't
have a comparable field, but a custom property can be mapped
timestamp
: the name of the property in each GeoJSON Feature that contains
a timestamp in XML Schema Time (yyyy-mm-ddThh:mm:sszzzzzz)
Document name and description: KML supports name
and description
properties
for the full document.
documentName
: the name of the full documentdocumentDescription
: the description of the full document
simplestyle-spec support:
simplestyle
: set to true
to convert simplestyle-spec styles into KML stylesiconUrl
: override the href
of the <Icon>
nodes within each <Style>
Development
Requires node.js and browserify:
To build tokml.js
:
make
To run tests:
yarn install
yarn run test