Javascript 如何在传单中显示单个国家多边形并将其居中?
当我使用加载页面时,我尝试自动缩放到特定的国家/地区名称。当我发布页面时,我可以得到如下变量:Javascript 如何在传单中显示单个国家多边形并将其居中?,javascript,jquery,json,leaflet,Javascript,Jquery,Json,Leaflet,当我使用加载页面时,我尝试自动缩放到特定的国家/地区名称。当我发布页面时,我可以得到如下变量: var $myCountry = "France"; 现在我加载json,如下所示: $json = file_get_contents("/world.json"); $data = json_decode($json, true); 这是我的geoJson结构: { "type":"Feature", "id":"AFG", "properties":{"name":"France
var $myCountry = "France";
现在我加载json,如下所示:
$json = file_get_contents("/world.json");
$data = json_decode($json, true);
这是我的geoJson结构:
{
"type":"Feature",
"id":"AFG",
"properties":{"name":"France"},
"geometry":{
"type":"Polygon",
"coordinates":[
[
[61.210817,35.650072],
[62.230651,35.270664]
]
}
},
基本上,我想检查我的变量名是否等于geoJson中的一个名称,如果是,我想得到它的坐标,沿着这些线
var $myCoordinates = $myCountry.coordinates
我想这样做是为了根据变量中找到的国家名称放大地图,我也检查了这个,但我没有得到它
更新
这几乎是可行的,变量和属性名称之间的比较不是tho,但是变量字符串是正确的,在json中,我们有一个具有相同字符串的名称
var $country = "<?php echo $region; ?>";
$.ajax({
type: 'GET',
url: '/world.json',
data: { get_param: 'value' },
dataType: 'json',
success: function (data) {
$.each(data, function(index, element) {
if (element.properties.name == $country) {
alert("ciao");
}
});
}
});
我想我们被你最初展示代码和数据结构以及文章标题的方式误导了 实际上,您并不是要扫描一个数组或一个简单的JSON对象,而是一个具有FeatureCollection和许多特性的GeoJSON对象 因此,您必须循环该FeatureCollection的功能,并扫描每个功能的properties.name 但即使这样,您仍然无法实现缩放到相应的传单层的目标:GeoJSON对象未链接到传单层,而相反 因此,您应该改为使用GeoJSON数据构建图层,然后扫描该组,例如,使用查找表示具有属性的功能的图层。名称===France 符合以下条件的事物: $.getJSON'/world.json',函数geoJSONdata{ var geoJSONgroup=L.geoJSONgeoJSONdata.addTomap; geoJSONgroup.eachLayerfunction层{ 如果layer.feature.properties.name==法国{ //缩放到该层。 map.fitbundslayer.getBounds; } }; };
演示:要检查的值是否始终包含在obj.properties.name中?是,根据我在问题中所写的内容,整个geoJson具有适用于所有国家的结构,在这种情况下,请参阅我标记为解决方案的副本,但该答案不是关于json,而是一个数组variable@RoryMcCrossan这不应该被标记为重复,因为我所问的不是重复的问题所问的,即使解决方案也很相似哦,老兄,真的非常感谢你。我已经花了好几个小时在这个问题上,尝试了任何可能的破解,我甚至最终陷入了多边形的质心,疯狂。所有这些仅仅是因为我不知道这个特性。谢谢