netzmacht / php-leaflet
PHP leaflet 定义和 JavaScript 生成器
1.1.3
2023-02-20 10:54 UTC
Requires
- php: ^7.1 || ^8.0
- ext-json: *
- beberlei/assert: ~2.0 || ^3.0
- netzmacht/php-javascript-builder: ~1.0
- symfony/event-dispatcher: ^4.4 || ^5.1
Requires (Dev)
- phpcq/coding-standard: ^2.1
- phpcq/runner-bootstrap: ^1.0@dev
This package is auto-updated.
Last update: 2024-09-20 14:20:13 UTC
README
此库提供了一套 PHP API,用于设置 Leaflet 地图定义。库的目标是提供一个方便的方法来处理在 PHP 环境中工作的动态地图配置。
安装
您可以使用 composer 安装此库
$ php composer.phar require netzmacht/php-leaflet
功能
此库提供不同的组件
- 定义类,用于定义包含所有图层、控件等的 Leaflet 地图。
- 值类,具有实际行为,可以用于处理 LatLng 或 GeoJSON 特性。
- 编码器组件,用于将 PHP leaflet 定义转换为 JavaScript。
- 支持多个 Leaflet 插件。
- 资源处理,自动加载所有插件所需的所有 JavaScript 和 CSS 文件。
开始之前
- 定义类有一些混合行为。其中一些有用的行为已实现。一些方法仅创建 JavaScript 方法调用。
- 目标是实现与 JavaScript API 的紧密反射。由于语言不同,有一些变化,您应该注意。
要求
此库需要 PHP 5.6 和 symfony 事件调度器。事件调度器被 php-javascript-builder 使用,该工具编码 PHP 定义。
示例
/* * 1. Setup the encoder */ // The event dispatcher $dispatcher = new \Symfony\Component\EventDispatcher\EventDispatcher(); // All encoders are event subscribers. $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\ControlEncoder()); $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\GroupEncoder()); $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\MapEncoder()); $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\RasterEncoder()); $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\TypeEncoder()); $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\UIEncoder()); $dispatcher->addSubscriber(new Netzmacht\LeafletPHP\Encoder\VectorEncoder()); // Create a custom factory for the javascript builder which uses the event dispatcher. // The order of the registered encoders are important! Only change if you know what you do. $factory = function(Output $output) use ($dispatcher) { $encoder = new ChainEncoder(); $encoder ->register(new \Netzmacht\JavascriptBuilder\Encoder\MultipleObjectsEncoder()) ->register(new \Netzmacht\JavascriptBuilder\Symfony\EventDispatchingEncoder($dispatcher)) ->register(new \Netzmacht\JavascriptBuilder\Encoder\JavascriptEncoder($output)); return $encoder; }; $builder = new \Netzmacht\JavascriptBuilder\Builder($factory); $leaflet = new \Netzmacht\LeafletPHP\leaflet($builder, $dispatcher); /* * 2. Create the map definitions */ $map = new \Netzmacht\LeafletPHP\Definition\Map('html_id', 'map'); $map ->setZoom(12) ->addControl(...) ->addLayer(...); /* * 3. Build the javascript */ // Will return javascript with following local vars: "map", "layers", "controls", "icons". echo $leaflet->build($map);