2amigos / yii2-leaflet-extension

Yii 2 Extension library to display interactive maps with Leaflet .
http://yiiwheels.com
Other
30 stars 26 forks source link

Wrong initialization scrip of the map #41

Open bobonov opened 6 years ago

bobonov commented 6 years ago

Since the map is initialized in the following way:

function map_init(){
    var map = L.map('w0', {});

this make map unavailable in global scope therefore is impossible to operate via javascript on the map (ie change the center) Something, at javascript level, like this should work.

var map;
function map_init(){
    map = L.map('w0', {});

So in the php code in Map.php: line 103 from

array_unshift($js, "var $name = L.map('$id', $options);");

to

array_unshift($js, "$name = L.map('$id', $options);");

and line 122

$view->registerJs("function {$name}_init(){\n" . implode("\n", $js) . "}\n{$name}_init();");

to

$view->registerJs("var {$name};\nfunction {$name}_init(){\n" . implode("\n", $js) . "}\n{$name}_init();");
bobonov commented 6 years ago

I made a test and is sufficient to change line 103 in this way the map var is implicitly global.

bobonov commented 6 years ago

I think layers/* (I checked only some of them) suffer from same issue. In the files I checked is sufficient to remove var in front of the javascript variable declaration. form

$js = "var $name = $js;"

to

$js = "$name = $js;"