我在使用leaflet加载页面时尝试自动缩放到特定的国家/地区名称。当我发布我的页面时,我可以得到一个变量:
you have wrong syntax at rules inside urlManager, it must be like:
'rules' => array(
'<controller:\w+>/<id:\d+>' => '<controller>/view',
'<controller:\w+>/<action:\w+>/<id:\d+>' => '<controller>/<action>',
'<controller:\w+>/<action:\w+>' => '<controller>/<action>',),
现在我加载我的json:
var $myCountry = "France";
这是我的geoJson结构:
$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]
]
}
},
我想这样做是为了根据变量中找到的国家/地区名称放大地图,我还检查了另一个SO question,但我没有得到它。
更新
这几乎可行,变量和专有名称之间的比较不是tho,但变量字符串是正确的,并且通过json我们确实有一个具有相同字符串的名称
var $myCoordinates = $myCountry.coordinates
答案 0 :(得分:1)
我认为我们最初显示您的代码和数据结构以及帖子标题时会被误导。
实际上,您并不是在尝试扫描数组或简单的JSON对象,而是使用具有FeatureCollection和许多功能的GeoJSON对象。
因此,您必须遍历该FeatureCollection的功能,并扫描每个功能的properties.name
。
但即便如此,您仍然无法执行缩放到相应Leaflet图层的目标:GeoJSON对象未链接到您的Leaflet图层,反之亦然。
因此,您应该从GeoJSON数据中构建Leaflet GeoJSON group,然后扫描该组(例如使用eachLayer()
)以找到具有{{1}的要素表示的图层}。
符合以下内容:
properties.name === "France"