1. Go to this page and download the library: Download beastbytes/yii-leaflet library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
beastbytes / yii-leaflet example snippets
use BeastBytes\Widgets\Leaflet\Map;
use BeastBytes\Widgets\Leaflet\controls\LayersControl;
use BeastBytes\Widgets\Leaflet\controls\ScaleControl;
use BeastBytes\Widgets\Leaflet\layers\other\LayerGroup;
use BeastBytes\Widgets\Leaflet\layers\raster\TileProvider;
use BeastBytes\Widgets\Leaflet\layers\ui\Marker;
use BeastBytes\Widgets\Leaflet\layers\vector\Circle;
use BeastBytes\Widgets\Leaflet\plugins\Fullscreen\FullscreenControl;
use BeastBytes\Widgets\Leaflet\types\Icon;
use BeastBytes\Widgets\Leaflet\types\LatLng;
use BeastBytes\Widgets\Leaflet\types\Point;
// Centre of map
$centre = new LatLng(51.772550, -4.953250);
// Layer group with a marker and circle
$centreLayerGroup = new LayerGroup([
new Circle($centre, [
'radius' => 15000,
'color' => "#20ffcd"
])->tooltip('15km radius'),
new Circle($centre, [
'radius' => 10000,
'color' => "#3388ff"
])->tooltip('10km radius'),
new Circle($centre, [
'radius' => 5000,
'color' => "#573CFF"
])->tooltip('5km radius'),
new Marker($centre, [
'icon' => new Icon([
'iconAnchor' => new Point(12, 40),
'iconUrl' => "leaflet/images/marker-icon.png",
'shadowUrl' => 'leaflet/images/marker-shadow.png'
])
])->popup('<p><b>Little Dumpledale Farm</b></p>' .
'<p>Ashdale Lane<br>Sardis<br>Haverfordwest<br>Pembrokeshire<br>SA62 4NT</p>' .
'<p>Tel: +44 1646 602754</p>')
]);
$pubLayers = [];
$pubs = [
[
'name' => 'The Cottage Inn',
'address' => 'Llangwm, Haverfordwest, Pembrokeshire, SA62 4HH',
'tel' => '+44 1437 891494',
'location' => [51.749151, -4.913822]
],
[
'name' => 'Jolly Sailor',
'address' => 'Burton, Milford Haven, Pembrokeshire, SA73 1NX',
'tel' => '+44 1646 600378',
'location' => [51.7079864, -4.925951]
]
];
foreach ($pubs as $pub) {
$pubLayers[] = new Marker($pub['location'], [
'icon' => [
'iconAnchor' => new Point(12, 40),
'iconUrl' => "leaflet/images/marker-icon.png",
'shadowUrl' => 'leaflet/images/marker-shadow.png'
]
])->popup('<p><b>' . $pub['name'] . '</b></p>' .
'<p>' . str_replace(', ', '<br>', $pub['address']) . '</p>' .
'<p>Tel: ' . $pub['tel'] . '</p>');
}
// group the pub layers
$pubsLayerGroup = new LayerGroup($pubLayers)->addToMap(false);
$draggable = new Marker([51.786979, -4.977206], [
'draggable' => true,
'icon' => new Icon([
'iconAnchor' => new Point(12, 40),
'iconUrl' => "leaflet/images/marker-icon.png",
'shadowUrl' => 'leaflet/images/marker-shadow.png'
])
])
->addToMap(false)
->popup('Drag me and see what happens'),
->events([
'dragend' => 'function(e){const position=e.target.getLatLng();window.alert("Moved by " + Math.floor(e.distance) + " pixels\nNew position " + position.lat + ", " + position.lng);}'
]);
$overlays = [
'Little Dumpledale' => $centreLayerGroup,
'Pubs' => $pubsLayerGroup,
'Draggable' => $draggable
];
$map = Map::widget()
->attributes([
'style' => 'height:800px;' // a height must be specified
])
->options([
'center' => $centre,
'layers' => [
(new TileProvider())->use('OpenStreetMap') // base tile layer
],
'zoom' => self::ZOOM
])
->addCcontrols(
new LayersControl(overlays: array_keys($overlays)), // layers control to control layer visibility
new ScaleControl()
)
->addLayers($overlays)
->addPlugins(new FullscreenControl())
]);
echo $map->render();
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.