, (*1)
SvgMap
Yii2-Π²ΠΈΠ΄ΠΆΠ΅Ρ Π΄Π»Ρ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ svg ΠΏΠΎ Π·Π°Π΄Π°Π½Π½ΠΎΠΌΡ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΡ Π΄Π°Π½Π½ΡΡ
., (*2)
Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ°
ΠΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌ ΠΊΠΎΠΌΠ°Π½Π΄Ρ, (*3)
php composer.phar require ghopper/svg-map "*"
ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΠΌ Π² composer.json, (*4)
{
"require": {
"ghopper/svg-map": "*"
}
}
ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ
ΠΠΎΠ΄ΠΊΠ»ΡΡΠ°Π΅ΠΌ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ ΠΈΠΌΠ΅Π½
use ghopper\svgmap\SvgMapWidget;
Π ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅ΡΠ΅ ΠΏΠΎΠ»ΡΡΠ°Π΅ΠΌ Π΄Π°Π½Π½ΡΠ΅ Π΄Π»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ svg (Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ ΠΈΠ· ΠΏΡΠΈΠΌΠ΅ΡΠ°) ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π² ΡΠ°Π±Π»ΠΎΠ½
$file = Yii::getAlias('@ghopper/svgmap/example') . "/russia.json";
$data = file_get_contents($file);
$states = json_decode($data);
...
$this->render('index', ['svgData' => $states]);
Π ΡΠ°Π±Π»ΠΎΠ½Π΅ ΡΠΎΠ·Π΄Π°Π΅ΠΌ js-ΠΎΠ±ΡΡΠ±ΠΎΡΡΠΈΠΊΠΈ ΡΠΎΠ±ΡΡΠΈΠΉ Π² Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΉ Π·ΠΎΠ½Π΅ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ
<script>
var customClick = function(path) {alert(path.attr('id') + ' - ' + path.attr('title'))};
</script>
Π ΡΠ°ΠΌ ΠΆΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°Π΅ΠΌ Π²ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π²ΠΈΠ΄ΠΆΠ΅ΡΡ
<?php
echo SvgMapWidget::widget([
'type' => SvgMapWidget::DATA_SOURCE_ARRAY,
'data' => $svgData,
'onClick' => 'customClick',
]);
?>
ΠΡΡΠΎΡΠ½ΠΈΠΊΠΈ Π΄Π°Π½Π½ΡΡ
ΠΡ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΡΠ²ΠΎΠΈ Π΄Π°Π½Π½ΡΠ΅ ΠΊ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡ ΡΠΎΡΠΌΠ°ΡΡ:, (*5)
{
title: "ΠΠ»Π΅ΠΌΠ΅Π½Ρ #1",
d: ["M 50,50 10,0 0,10 -10,0 z"]
}
ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ id, ΠΊΠΎΠ»-Π²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ², Π°Π΄ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅Ρ
ΠΎΠ΄Π° ΠΈΠ»ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅,ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΠΌ ΠΌΠΎΠ³ΡΡ ΠΏΠΎΠ½Π°Π΄ΠΎΠ±ΠΈΡΡΡΡ. Π ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠΎΠ²Π°ΡΡ ΡΡΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ
ΡΠΎΠ±ΡΡΠΈΠΉ., (*6)
ΠΠΈΠ΄ΠΆΠ΅Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ
:
* SvgMapWidget::DATA_SOURCE_ARRAY - php-ΠΌΠ°ΡΡΠΈΠ²
* SvgMapWidget::DATA_SOURCE_JSON_URL - ΡΡΡΠ»ΠΊΠ° Π½Π° json, (*7)
ΠΠ½Π΅ΡΠ½ΠΈΠΉ Π²ΠΈΠ΄
ΠΠ΅ΡΠΎΠ»ΡΠ½ΡΠ΅ ΡΡΠΈΠ»ΠΈ Π·Π°Π»ΠΎΠΆΠ΅Π½Ρ @vendor/ghopper/svg-map/src/css/svg-map.css
, ΠΊΠΎΡΠΎΡΡΠ΅ Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΊΠ°ΠΊ ΡΠ³ΠΎΠ΄Π½ΠΎ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π² ΡΠ²ΠΎΠ΅ΠΌ ΠΊΠΎΠ΄Π΅. Π‘Π°ΠΌ Π²ΠΈΠ΄ΠΆΠ΅Ρ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠΎΡΡΡΡ ΡΡΡΡΠΊΡΡΡΡ, (*8)
<div class='svg_map'>
<div><!--tooltip--></div>
<svg />
</div>
ΠΠΎΠΆΠ΅ΡΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΡΠ»ΠΎΠΆΠ½ΡΡ Π°Π½ΠΈΠΌΠ°ΡΠΈΡ Π² ΠΎΠ±ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°Ρ
ΡΠΎΠ±ΡΡΠΈΠΉ., (*9)
ΠΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π·Π°ΠΏΡΡΠΊΠ° Π²ΠΈΠ΄ΠΆΠ΅ΡΠ°
ΠΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅
- type - ΡΠΈΠΏ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π΄Π°Π½Π½ΡΡ
- data - Π΄Π°Π½Π½ΡΠ΅ ΠΊ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ type (Π°Π΄ΡΠ΅Ρ json Π»ΠΈΠ±ΠΎ ΠΌΠ°ΡΡΠΈΠ²)
ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅
- showTip - ΡΠ»Π°Π³, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΠΉ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡ ΠΈΠ»ΠΈ Π½Π΅Ρ toolTip
- showTools - ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π° ΠΏΠ΅ΡΠ΅Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΡ ΠΈ Π·ΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠ°ΡΡΡ
- onClick - callback-ΡΡΠ½ΠΊΡΠΈΡ ΠΊΠ»ΠΈΠΊΠ° ΠΏΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ svg path
- onOver - callback-ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΏΡΠΈ Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΈ ΠΊΡΡΡΠΎΡΠ° Π½Π°Π΄ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠΌ
- onOut - callback-ΡΡΠ½ΠΊΡΠΈΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΊΠΎΠ³Π΄Π° ΠΊΡΡΡΠΎΡ ΠΏΠΎΠΊΠΈΠ΄Π°Π΅Ρ ΡΠ»Π΅ΠΌΠ΅Π½Ρ