The preferred way to install this extension is through composer.
"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
mirocow\yandexmaps\Api
mirocow\yandexmaps\Map
mirocow\yandexmaps\Canvas
mirocow\yandexmaps\Placemark
mirocow\yandexmaps\Polygon
mirocow\yandexmaps\Controls
mirocow\yandexmaps\Polyline
mirocow\yandexmaps\GeoObject
- TODO: Geo XML
- TODO: Balloon
- TODO: Hint
- TODO: Clusterer
Application components which register scripts.
Usage
Attach component to application (e.g. edit config/main.php):
'components' => [
'yandexMapsApi' => [
'class' => 'mirocow\yandexmaps\Api',
]
],
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'])",
],
]
);
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,
]);
'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"}})',
],
$placemark = new mirocow\yandexmaps\objects\Placemark([
55.7372,
37.6066
], [
], [
'draggable' => true
]
);
TODO:
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);
TODO:
<?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(); ?>