I am using http://GeoJSON.io as the source for my data, which is then to be displayed via Leaflet.js.
I found that leaflet neads the file to include "var name = {" but GeoJSON.io doesn't like it, and doesn't load the file if it starts with this.
To edit the file, I need to remove this part, edit, then add it back in. I am a beginner, so could anyone help me to avoid doing this? Can I declare the vairable some other way?
This is my HTML:
<!DOCTYPE html>
<html>
<head>
<title>Vietas</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" href="dist/leaflet.css" />
<!--[if lte IE 8]><link rel="stylesheet" href="dist/leaflet.ie.css" /><![endif]-->
<link rel="points" type="application/json" href="dati1.geojson">
<style type="text/css">
html,body {padding: 0; margin: 0}
#map {position:absolute; top:0; bottom:0; width:100%; margin:0; padding:0}
</style>
</head>
<body>
<div id="map"></div>
<script src="dati1.geojson" type="text/javascript"></script>
<script src="dist/leaflet.js"></script>
<script>
var map = L.map('map').setView([56.74739, 24], 9);
L.tileLayer('http://{s}.tile.cloudmade.com/{key}/22677/256/{z}/{x}/{y}.png', {
attribution: 'Map data © 2011 OpenStreetMap contributors, Imagery © 2012 CloudMade',
key: 'BC9A493B41014CAABB98F0471D759707'
}).addTo(map);
function onEachFeature(feature, layer) {
var popupContent = '<div class="'+ feature.properties.samaksa +'"><b>' + feature.properties.title + '</b><br/>' +
'<p>' + feature.properties.description + '</p>' +
'<img src="img/' + feature.properties.image + '"/>' +
'<p><em style="font-size: 0.8em"><a href="http://sapnis.com/vietas/#14/'+ feature.geometry.coordinates +'">' + feature.geometry.coordinates +'</a></em></p></div>';
layer.bindPopup(popupContent);
}
L.geoJson([punkti], {
style: function (feature) {
return feature.properties && feature.properties.style;
},
onEachFeature: onEachFeature,
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, {
radius: 6,
fillColor: "#e1e1e1",
color: "#888",
weight: 2,
opacity: 1,
fillOpacity: 0.7
});
}
}).addTo(map);
</script>
</body>
</html>
And here is the current GeoJSON file: http://sapnis.com/vietas2/dati1.geojson
As you see, it starts with "var" which is unacceptable per JSON syntax
I marked the question as answered, but will add the solution for future visitors of this page. Solved like this:
<!DOCTYPE html>
<html>
<head>
<title>Vietas</title>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<script src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
<link rel="stylesheet" href="dist/leaflet.css" />
<!--[if lte IE 8]><link rel="stylesheet" href="dist/leaflet.ie.css" /><![endif]-->
<link rel="points" type="application/json" href="dati1.geojson">
<style type="text/css">
html,body {padding: 0; margin: 0}
#map {position:absolute; top:0; bottom:0; width:100%; margin:0; padding:0}
</style>
</head>
<body>
<div id="map"></div>
<script src="dist/leaflet.js"></script>
<script>
var map = L.map('map').setView([56.74739, 24], 9);
L.tileLayer('http://{s}.tile.cloudmade.com/{key}/22677/256/{z}/{x}/{y}.png', {
attribution: 'Map data © 2011 OpenStreetMap contributors, Imagery © 2012 CloudMade',
key: 'BC9A493B41014CAABB98F0471D759707'
}).addTo(map);
function onEachFeature(feature, layer) {
var popupContent = '<div class="'+ feature.properties.samaksa +'"><b>' + feature.properties.title + '</b><br/>' +
'<p>' + feature.properties.description + '</p>' +
'<img src="img/' + feature.properties.image + '"/>' +
'<p><em style="font-size: 0.8em"><a href="http://sapnis.com/vietas/#14/'+ feature.geometry.coordinates +'">' + feature.geometry.coordinates +'</a></em></p></div>';
layer.bindPopup(popupContent);
}
$.getJSON("dati1.geojson", function(data) {
var geojson = L.geoJson([data], {
style: function (feature) {
return feature.properties && feature.properties.style;
},
onEachFeature: onEachFeature,
pointToLayer: function (feature, latlng) {
return L.circleMarker(latlng, {
radius: 6,
fillColor: "#e1e1e1",
color: "#888",
weight: 2,
opacity: 1,
fillOpacity: 0.7
});
}
});
geojson.addTo(map);
});
</script>
</body>
</html>