在yii中使用geojson文件的高分辨率Map

aydmsdu9  于 2022-11-09  发布在  其他
关注(0)|答案(2)|浏览(178)

我正在使用Yii扩展的高Map,但无法找到一个例子添加geojson文件到它,Yii扩展提供了下面的例子,我想添加geojson文件使用php.

$this->widget('ext.highcharts.HighmapsWidget', array(
'options' => array(
    'title' => array(
        'text' => 'Highmaps basic demo',
    ),
    'series' => array(
        array(
            'data' => array(
                array('hc-key' => 'de-ni', 'value' => 0),
                array('hc-key' => 'de-hb', 'value' => 1),
            ),
            'mapData' => 'js:Highcharts.maps["countries/de/de-all"]',
            'joinBy' => 'hc-key',
            'name' => 'Random data',
        )
    )
)));
  • 'Map数据' =〉'js:Highcharts.Map[“国家/地区/全部”]',*

您的帮助将不胜感激,谢谢

mctunoxg

mctunoxg1#

假设您使用file_get_contents获取json文件

$json = file_get_contents('http://your.link.com');

并且json文件的格式适合您的数据

$yourJsonData = json_decode($json);

应该是

......
'series' => array(
        array(
            'data' =>$yourJsonData,
            'mapData' => 'js:Highcharts.maps["countries/de/de-all"]',
            'joinBy' => 'hc-key',
            'name' => 'Random data',
        )
    )
....
gcuhipw9

gcuhipw92#

如果有人还在纠结于同一个问题,这里有一个窍门。使用registerJs通过myCallbackFunction在最后附加geojson文件。所有数据将通过JS中的data变量引用。然后使用new JsExpression('data ')在map键或mapData键引用它。下面是我的项目的示例代码

$this->registerJs('$.getJSON("url_path_to_file.geojson", myCallbackFunction);');

 echo \miloschuman\highcharts\Highmaps::widget([
                            'callback' => 'myCallbackFunction',
                            'options' => [
                                'chart' => [
                                    'map' => new JsExpression('data'),
                                    'height' => 600
                                ],
                                'title' => ['text' => 'My Title'],
                                'colorAxis' => ['min' => 0],
                                'series' => [
                                    [
                                        //'mapData' => new JsExpression('data'),
                                        'data' => $map_data,
                                        'dataLabels' => ['enabled' => true, 'format' => '{point.name}'],
                                        'joinBy' => 'hc-key',
                                    ],
                                ],

                            ]
                        ]);

它的解释在HighStock,与一些编辑的网址,它可以工作的Map太多。供参考https://github.com/miloschuman/yii2-highcharts/blob/master/doc/examples/highstock.md

相关问题