2015-09-04 23 views
1

我跟着这篇教程在这里http://leafletjs.com/examples/choropleth.html使用GEOJSON格式的状态做一个状态级别的等值线。Choropleth传单ajax

Leaflet GeoJSON允许我们发送AJAX请求来获取外部参数。像这样的东西

$.ajax({ 
    dataType: 'json', 
    url: 'atl_metro.geojson', 
    success: function(data) { 
     $(data.features).each(function(key, data) { 

      var zips = L.geoJson(data,{ 
       onEachFeature: onEachFeature, 
       style: style 
      }).addTo(map); 

     }); 
    } 
}).error(function() {}); 

有没有办法使用它使用TopJSON?

+0

编辑完你的问题,我的回答让完全没有意义了这样的方式。 :D你误解了很多东西,我不知道从哪里开始。我会先回答你的其他问题,也许事情会变得更清晰。 – iH8

+0

我很抱歉,我将恢复编辑,以便您的答案再次有意义! :) – user2961712

回答

1

为什么不使用普通香草TopoJSON并丢弃omnivore插件。它只是一个包装,而另一个依赖则不需要,因为TopoJSON本身使用起来非常简单。

var url = 'https://rawgit.com/mbostock/topojson/master/examples/us-10m.json'; 

// Fetch topojson file via jQuery 
$.getJSON(url, function(data) { 
    // Convert the topojson to geojson 
    var geojsonData = topojson.feature(data, data.objects.counties); 
    // Create new geojsonlayer with the data 
    var geojsonLayer = new L.GeoJSON(geojsonData, { 
    style: getStyle, 
    }).addTo(map); 
}); 

function getStyle(feature) { 
    return { 
    weight: 1, 
    opacity: 1, 
    color: '#fff', 
    fillOpacity: 0.7, 
    // fillColor: getColor(feature.properties.density) 
    // TopoJSON used in this example doesn't have any data attributes 
    // so throwing in some random colors 
    fillColor: '#'+Math.floor(Math.random()*16777215).toString(16) 
    }; 
} 

这里有Plunker工作示例:http://plnkr.co/edit/5Kn94H?p=preview

+0

也许你可以编辑你的问题,并制定一个更好的问题。我不确定你真正想要完成什么。这些是额外的问题,这不是什么意见。 – iH8

+0

你完全错了。您不能使用TopoJSON或GeoJSON来制作AJAX/XHR请求。 '$ .ajax'和'$ .getJSON'方法来自您正在使用的jQuery库。 mouseevents与Topo或GeoJSON无关。这些事件是Leaflet的一部分。如果您使用TopoJSON,将其转换为GeoJSON或使用普通的vanilla GeoJSON,则一旦将GeoJSON数据加载到Leaflet的GeoJSON图层中,该层就负责这些事件。 – iH8

+0

是的,谢谢你我已经找到了这个问题。我已经实现并获得了缩放和其他功能! 剩下的唯一的东西是,topojson.featuure在转换为Geojson时保留TopoJson文件的属性吗?我已经在其他问题上评论过这一点。感谢您的帮助! – user2961712