mirocow/yii2-yandex-maps

Yii 2 yandex map module

Maintainers

πŸ‘ Mirocow

Package info

github.com/Mirocow/yii2-yandex-maps

Wiki

Type:yii2-extension

pkg:composer/mirocow/yii2-yandex-maps

Statistics

Installs: 25 882

Dependents: 1

Suggesters: 0

Stars: 23

Open Issues: 3

dev-master 2020-02-10 00:48 UTC

Requires

Requires (Dev)

None

Suggests

None

Provides

None

Conflicts

None

Replaces

None

MIT e09b68e4b0590d6b1d0c490561c4651a4b481ac5

  • Mirocow <mr.mirocow.woop@gmail.com>

mapyiiyandexyii2

This package is auto-updated.

Last update: 2026-06-10 14:38:28 UTC


README

πŸ‘ Latest Stable Version
πŸ‘ Latest Unstable Version
πŸ‘ Total Downloads
πŸ‘ Daily Downloads
πŸ‘ License

Installation

The preferred way to install this extension is through composer.

Add repositor

 "repositories": [
 {
 "type": "git",
 "url": "https://github.com/mirocow/yii2-yandex-maps.git"
 }
 ]

and then

php composer.phar require --prefer-dist "mirocow/yii2-yandex-maps" "*"

or add

"mirocow/yii2-yandex-maps" : "*"

to the require section of your application's composer.json file.

For last Yii2 2.X version please use patch https://github.com/iamruslan/yii2-yandex-maps/commit/fee95f91b4b313424c5041101f57a6b49d0a7276

Components

mirocow\yandexmaps\Api

Application components which register scripts.

Usage

Attach component to application (e.g. edit config/main.php):

'components' => [
	'yandexMapsApi' => [
		'class' => 'mirocow\yandexmaps\Api',
	]
 ],

mirocow\yandexmaps\Map

Map instance.

Usage

 $map = new \mirocow\yandexmaps\Map('yandex_map', [
 'center' => [55.7372, 37.6066],
 'zoom' => 10,
 // Enable zoom with mouse scroll
 'behaviors' => array('default', 'scrollZoom'),
 'type' => "yandex#map",
 ], 
 [
 // Permit zoom only fro 9 to 11
 'minZoom' => 9,
 'maxZoom' => 11,
 'controls' => [
 "new ymaps.control.SmallZoomControl()",
 "new ymaps.control.TypeSelector(['yandex#map', 'yandex#satellite'])", 
 ], 
 ] 
 ); 

mirocow\yandexmaps\Canvas

This is widget which render html tag for your map.

Usage

Simple add widget to view:

echo \mirocow\yandexmaps\Canvas::widget([
 'htmlOptions' => [
 'style' => 'height: 400px;',
 ],
 'map' => $map,
 ]);

mirocow\yandexmaps\Controls

 'controls' => [
 // v 2.1
 'new ymaps.control.ZoomControl({options: {size: "small"}})',
 //'new ymaps.control.TrafficControl({options: {size: "small"}})',
 //'new ymaps.control.GeolocationControl({options: {size: "small"}})',
 'search' => 'new ymaps.control.SearchControl({options: {size: "small"}})',
 //'new ymaps.control.FullscreenControl({options: {size: "small"}})',
 //'new ymaps.control.RouteEditor({options: {size: "small"}})',
 ],

mirocow\yandexmaps\GeoObject

mirocow\yandexmaps\Placemark

 $placemark = new mirocow\yandexmaps\objects\Placemark([
 55.7372,
 37.6066
 ], [

 ], [
 'draggable' => true
 ]
 );

mirocow\yandexmaps\Polygon

TODO:

mirocow\yandexmaps\Clusterer

 for (var i in map_point) {
 points[i] = new ymaps.GeoObject({
 geometry : {
 type: 'Point',
 coordinates : [map_point[i]['lat'],map_point[i]['lng']]
 },
 properties : {
 balloonContentBody : map_point[i]['body']
 // hintContent : 'ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅'
 }
 },
 {
 iconImageHref: '/i/' + map_point[i]['spec']+'.png',
 iconImageSize: [29,29],
 balloonIconImageHref: '/i/' + map_point[i]['spec']+'.png',
 balloonIconImageSize: [29,29],
 hasBalloon: true
 });
 }

 var clusterer = new ymaps.Clusterer();
 clusterer.add(points);
 map.geoObjects.add(clusterer);

mirocow\yandexmaps\Polyline

TODO:

Examples:

User form with yandex map:

<?php
$form = ActiveForm::begin([
 'options' => ['class' => 'user-settings'],
 'fieldConfig' => [
 'options' => [
 'tag' => false,
 ],
 ],
 ]);

 $map = new \mirocow\yandexmaps\Map('yandex_map', [
 'center' => [55.7372, 37.6066],
 'zoom' => 10,
 // Enable zoom with mouse scroll
 'behaviors' => ['default', 'scrollZoom'],
 'type' => "yandex#map",
 'controls' => [],
 ],
 [
 // Permit zoom only fro 9 to 11
 'minZoom' => 1,
 'maxZoom' => 11,
 'controls' => [
 // v 2.1
 'new ymaps.control.ZoomControl({options: {size: "small"}})',
 //'new ymaps.control.TrafficControl({options: {size: "small"}})',
 //'new ymaps.control.GeolocationControl({options: {size: "small"}})',
 'search' => 'new ymaps.control.SearchControl({options: {size: "small"}})',
 //'new ymaps.control.FullscreenControl({options: {size: "small"}})',
 //'new ymaps.control.RouteEditor({options: {size: "small"}})',
 ],
 'behaviors' => [
 'scrollZoom' => 'disable',
 ],
 'objects' => [
 <<<JS
search.events.add("resultselect", function (result){

 // Remove old coordinates
\$Maps['yandex_map'].geoObjects.each(function(obj){
\$Maps['yandex_map'].geoObjects.remove(obj);
 }); 

 // Add selected coordinates
 var index = result.get('index');
 var searchControl = \$Maps['yandex_map'].controls.get(1);
 searchControl.getResult(index).then(function(res) {
 var coordinates = res.geometry.getCoordinates();
 $('#coordinates').html('');
 $('#coordinates').append('<input type="hidden" name="User[coordinates][]" value="'+coordinates[0]+'">');
 $('#coordinates').append('<input type="hidden" name="User[coordinates][]" value="'+coordinates[1]+'">');
 });

});
JS

 ],
 ]
 );?>

 <?= \mirocow\yandexmaps\Canvas::widget([
 'htmlOptions' => [
 'style' => 'height: 400px;',
 ],
 'map' => $map,
 ]);

 ?>

 <div id="coordinates"></div>
 
<?php ActiveForm::end(); ?>