有没有人见过美国国会选区的topoJSON文件?或者,如果我可以找到坐标或geoJSON文件,是否可以轻松转换为弧形?
由于Geojson是实际的json,我想我可以使用mongoimport从.geojson文件将数据加载到我的MongoDB数据库中.
但我收到以下错误:
exception:BSON representation of supplied JSON is too large: code FailedToParse: FailedToParse: Expecting '{': offset:0
Run Code Online (Sandbox Code Playgroud)
该文件是25MB,这是它的一个片段:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"id": "node/2661561690",
"properties": {
"timestamp": "2014-02-08T17:58:24Z",
"version": "1",
"changeset": "20451306",
"user": "Schandlers",
"uid": "51690",
"natural": "tree",
"id": "node/2661561690"
},
"geometry": {
"type": "Point",
"coordinates": [
-66.9162255,
10.5056439
]
}
},
// ... Omitted data
{
"type": "Feature",
"id": "node/2664472516",
"properties": {
"timestamp": "2014-02-10T04:27:30Z",
"version": "2",
"changeset": "20477473",
"user": "albertoq",
"uid": "527105",
"name": "Distribuidora Brithijos (Aceites)", …Run Code Online (Sandbox Code Playgroud) 我有一个leaflet.js地图,其上有点和线串,来自外部JSON文件.
如果我添加:map.setView(new L.LatLng(0,0),10);
它将地图置于纬度和经度0,0的中心.如何设置它以使地图中心和缩放适合JSON上的所有点?
我正在试图弄清楚如何手动触发Leaflet多边形的事件(通过GeoJSON加载).
简而言之,我有一张带有多个多边形的Leaflet地图.我还在地图外部有一个常规超链接,当点击它时,应该触发特定多边形上的鼠标悬停事件(或任何事件).
如何为所有多边形分配ID,以便我可以将超链接绑定到特定多边形的事件?或者这甚至是最合乎逻辑的做法?
最终,我正在尝试创建一个包含大量多边形的地图以及与每个多边形相关联的HTML文本标签表.单击HTML表格文本时,我想在地图多边形上触发事件(反之亦然).我只是不知道如何引用每个多边形.
这是我非常简化的HTML:
<body>
<div id="map" style="height: 550px; width:940px"></div>
<a href="#" id="testlink">Click to trigger a specific polygon mouseover event</a>
</body>
Run Code Online (Sandbox Code Playgroud)
这是我非常简化的JS:
$(document).ready(function () {
// build the map and polygon layer
function buildMap(data) {
var map = new L.Map('map');
var cloudmadeUrl = 'http://{s}.tile.cloudmade.com/***yourkeyhere***/66267/256/{z}/{x}/{y}.png',
cloudmadeAttribution = '',
cloudmade = new L.TileLayer(cloudmadeUrl, {maxZoom: 18, attribution: cloudmadeAttribution});
var mapLoc = new L.LatLng(43.675198,-79.383287);
map.setView(mapLoc, 12).addLayer(cloudmade);
var geojsonLayer = new L.GeoJSON(null, {});
geojsonLayer.on("featureparse", function (e){
// apply the polygon style
e.layer.setStyle(polyStyle);
(function(layer, properties) …Run Code Online (Sandbox Code Playgroud) 我想将两个geojson图层加载到我的地图中,并能够使用不同的规则独立地设置它们.我可以使用下面的代码显示我的geojson文件,但由于它们都是同一个map.data对象的一部分,所以我只能将通用样式应用于两者.有没有办法解决?最终(长期目标)我也希望能够使用复选框打开和关闭不同的层(我首先关注独立样式,以免过度复杂化问题)
function initialize() {
map = new google.maps.Map(document.getElementById('map-canvas'), {
zoom: 12,
center: {lat: 39.218509, lng: -94.563703}
});
map.data.loadGeoJson('https://url1');
map.data.loadGeoJson('https://url2');
map.data.setStyle(function(feature) { //styling rules here}
google.maps.event.addDomListener(window, 'load', initialize);
Run Code Online (Sandbox Code Playgroud)
任何帮助将非常感谢.我看到一些看起来适用的线程(例如谷歌地图GeoJSON-切换标记图层?)但我不确定如何专门为我的目的应用它.
我正在从Postgis数据库加载geojson,并希望在我的地图上显示它.绘制多边形后,我希望地图缩放到添加的多边形的范围.
我的数据加载正常并在地图上显示正确,但我无法弄清楚如何获取边界并将缩放更改为新添加的多边形.我尝试使用Google 数据层中的部分代码 :拖放GeoJSON示例,但显示的地图放大到靠近贝克群岛的太平洋某处,而多边形在卢森堡正确显示.
这里是我使用的代码:
window.addEventListener("load", func1);
function func1(){
//Load mapdata via geoJson
var parzelle = new google.maps.Data();
parzelle.loadGeoJson("./mapdata/get_parzelle_geojson.php<?php echo "?gid=".$_GET['gid'];?>");
// Set the stroke width, and fill color for each polygon
var featureStyle = {
fillColor: '#ADFF2F',
fillOpacity: 0.1,
strokeColor: '#ADFF2F',
strokeWeight: 1
}
parzelle.setStyle(featureStyle);
parzelle.setMap(map);
zoom(map);
}
function zoom(map) {
var bounds = new google.maps.LatLngBounds();
map.data.forEach(function(feature) {
processPoints(feature.getGeometry(), bounds.extend, bounds);
});
map.fitBounds(bounds);
}
function processPoints(geometry, callback, thisArg) {
if (geometry instanceof google.maps.LatLng) {
callback.call(thisArg, geometry);
} …Run Code Online (Sandbox Code Playgroud) topoJSONgeoJSON在互联网上绘制地图时,文件非常常见.是否可以导入它们R来绘制等值区域图?
背景:我是OpenLayers的一个只有几个小时的新手,请保持温柔.
从根本上说,我有一个地图上有一些绘制的对象.如果我理解正确,我有一些OpenLayer.Feature.Vector(layers?),上面有许多OpenLayer.Geometry"thing"(如LinearRing).
目前,我似乎能够使用.toString()获得几何体的良好表示.是的,我怀疑我做错了 - 随意指出我正确的方向.
这产生了一个非常人性化的,可存储数据库的字符串,例如:
要点(-104.74560546875 44.2841796875)
POLYGON(( - 96.52783203125 44.6796875,-96.52783203125 45.734375,-92.22119140625 45.734375,-92.22119140625 44.6796875,-96.52783203125 44.6796875))
LINESTRING(-105.71240234375 44.6796875,-106.06396484375 42.658203125,-103.55908203125 42.7021484375,-103.47119140625 45.55859375,-104.65771484375 45.20703125)
有没有一种相反的方法可以将它们从那里带回到对象格式中?
我喜欢使用JSON,但似乎无法让GeoJSON接受我的OpenLayer.Feature.Vector对象(这是CLASS_NAME属性在我进入内部时所说的).
非常感谢.
我试图在传单中插入标记之间的行(从JSON数据生成).我看到了一个示例,但它不适用于JSON数据.我可以看到标记,但没有出现任何线条.
var style = {
color: 'red',
fillColor: "#ff7800",
opacity: 1.0,
fillOpacity: 0.8,
weight: 2
};
$.getJSON('./server?id_dispositivo=' + id_device + '', function(data) {
window.geojson = L.geoJson(data, {
onEachFeature: function (feature, layer) {
var Icon = L.icon({
iconUrl: './images/mymarker.png',
iconSize: [18, 28], // size of the icon
style: style,
});
layer.setIcon(Icon);
layer.bindPopup(feature.properties.date + '<br />' + feature.properties.id);
}
});
});
map.addLayer(geojson);
Run Code Online (Sandbox Code Playgroud)
我的JSON数据:
{
"type": "FeatureCollection",
"features": [
{
"type": "Feature",
"geometry": {
"type": "Point",
"coordinates": [
-70.219841,
8.6310997
]
},
"properties": …Run Code Online (Sandbox Code Playgroud) 是否可以使用JavaScript(通过d3,topojson或任何其他方式)确定给定lat,lon中的GeoJSON点是否位于给定的GeoJSON多边形内?
例如,我可以根据这里的教程绘制一张显示英国国家的地图.
然后我有一些点有坐标但没有迹象表明它们在哪个国家.
我想显示每个国家的总点数.
我可以确定哪个国家/地区包含浏览器中的每个点,或者我是否需要使用PostGIS或类似方法在服务器上预处理我的点数据?
geojson ×10
javascript ×4
geospatial ×2
json ×2
leaflet ×2
topojson ×2
d3.js ×1
events ×1
google-maps ×1
map ×1
mongodb ×1
openlayers ×1
persistence ×1
r ×1