互动地图具有很多很棒的用途。从可视化数据到突出关注点,预计地图可以轻松地在位置的背景下传达思想。
但是,最难的部分是将数据转换为地图可以理解的坐标。幸运的是,GeoCoder PHP允许我们连接到不同的地理编码提供商。结合一个简单的JavaScript库的FelleT.js,创建地图是微风的。钥匙要点
{ "require": { "willdurand/geocoder": "*" } }
注册提供商
<?php require 'vendor/autoload.php'; ?> <!DOCTYPE html> <html> <head> <title>A simple map with Geocoder PHP and Leaflet.js</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"> </head> <body> <div > <div > <div > <h1 >A simple map with Geocoder PHP and Leaflet.js</h1> </div> <div > <div > </div> </div> </div><!-- /row --> </div> <!-- /container --> <script></script> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> </body> </html>
注册一个适配器
完整列表可以在GeoCoder PHP存储库的读书中找到。
>由其各自的班级代表的每个提供商都有自己的选择。根据您的需求,您可以在各种情况下注册多个提供商。如果您的申请需要使用OpenStreetMap绘制哥斯达黎加圣何塞的特定街道并在中国北京找到一条快速路线,则可能会很有用。
在此示例中,我只需使用Google Maps,但是以某种方式注册它,如果我想在将来添加另一个提供商,我只需要将其添加到一个数组中:地理
{ "require": { "willdurand/geocoder": "*" } }
与feaflet.js
<?php require 'vendor/autoload.php'; ?> <!DOCTYPE html> <html> <head> <title>A simple map with Geocoder PHP and Leaflet.js</title> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css"> </head> <body> <div > <div > <div > <h1 >A simple map with Geocoder PHP and Leaflet.js</h1> </div> <div > <div > </div> </div> </div><!-- /row --> </div> <!-- /container --> <script src="https://img.php.cn/ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> <script src="//netdna.bootstrapcdn.com/bootstrap/3.0.0/js/bootstrap.min.js"></script> </body> </html>
地图由三个部分组成:
tiles
>数据点已经用我的地理编码器代码早些时候创建。我只需要以传单期望的方式格式化数据阵列。
>
在这个简单的示例中,我只需创建单个标记作为JavaScript变量,这些变量将通过PHP产生的字符串包含在我的地图中。// Setup geocoder adapter. $adapter = new \Geocoder\HttpAdapter\CurlHttpAdapter();
>传单可以选择该数据通过Geojson格式传递,以供更大,更动态的数据集传递。
由于传单将映射代码注入现有的DOM元素,因此我们首先必须在HTML内定义该元素。我们可以通过简单地创建一个具有唯一ID的DIV来做到这一点:
>
// Create a chain of providers. // Be sure to include my previously created adapter. $chain = new \Geocoder\Provider\ChainProvider( array( new \Geocoder\Provider\GoogleMapsProvider($adapter), ) ); // Instantiate the geocoder. $geocoder = new \Geocoder\Geocoder(); // Register my providers. $geocoder->registerProvider($chain);
现在,我们构建了地图的三个部分。要注册瓷砖,我们只需调用内置的tileLayer()方法,如果需要,定义属性和缩放级别,然后附加addto()方法:
>最后,我们使用我们之前定义的PHP数组打印地图数据,并确保通过将它们定义为组来确保将其集中在这些数据点上。总而言之,页脚中的JavaScript将是:
如果您走了这么远,您会注意到什么都不会发生。
这是因为传单不会在地图div的高度或宽度上注入属性,从而使您可以根据需要进行样式并调整大小。只需给您的div一个高度和宽度,您的地图就应该出现!
>>您可以使用GeoCoder PHP库和传单来创建美丽的互动地图。请务必查看每个项目的各个文档,因为还有更多的高级自定义。
>查看本文的演示或在Github上拨出它。>有几种方法可以优化。地图的性能。一种方法是使用针对性能进行优化的瓷砖层,例如向量瓷砖层。另一种方法是一次限制地图上显示的功能数量,例如使用聚类或仅在当前地图视图中显示功能。您还可以通过使用有效的数据库查询来优化PHP代码的性能,并在适当的情况下缓存结果。
>以上是用地理编码器php和feflet.js映射的详细内容。更多信息请关注PHP中文网其他相关文章!