dynamic / silverstripe-geocoder
SilverStripe 的地理编码包装器
Requires
Requires (Dev)
This package is auto-updated.
Last update: 2024-09-06 17:31:47 UTC
README
SilverStripe 包装器用于 Geocoder
要求
- Silverstripe ^5
- dynamic/silverstripe-country-dropdown-field ^2
- geocoder-php/google-maps-provider ^4.7
- guzzlehttp/guzzle ^7.4
- php-http/guzzle7-adapter ^1.0
- php-http/message ^1.13
安装
composer require dynamic/silverstripe-geocoder
许可证
见 许可证
示例用法
入门
在 mysite/_config/config.yml
中,将数据扩展应用于你的数据对象
SilverStripe\ORM\DataObject: extensions: - Dynamic\SilverStripeGeocoder\AddressDataExtension - Dynamic\SilverStripeGeocoder\DistanceDataExtension
Google API 密钥
你还需要设置两个 Google API 密钥。每个密钥都需要启用特定的 API 库
geocoder_api_key
- 地理编码 API
map_api_key
- 地图 JavaScript API
- 地图静态 API
这主要是由于 Google API 密钥的限制规则。地理编码密钥应与 Web 服务器公开 IP 地址相关联,而地图 API 需要限制为网站的域名。限制规则有助于防止未经授权的用户使用您的密钥,这可能会迅速耗尽您的 API 请求配额。
Dynamic\SilverStripeGeocoder\GoogleGeocoder: geocoder_api_key: 'your-key-here' map_api_key: 'your-key-here'
文档
AddressDataExtension
AddressDataExtension 添加了 Address
、Address2
、City
、State
、PostalCode
、Country
、Lat
和 Lng
字段。在 CMS 中,Lat
和 Lng
字段是只读的,并在写入时自动生成。可以在模型级别禁用地理编码,通过将 disable_geocoding
设置为 true。
SilverStripe\ORM\DataObject: disable_geocoding: true
静态地图图像
在模板中使用 $AddressMap
将渲染地图。$AddressMap
还有一些选项,可以轻松地修改地图的宽度、高度和比例。$AddressMap(320, 240, 1)
地图样式
可以通过在主题的以下任何文件夹中添加 mapStyle.json
来设置地图样式
client/dist/js/
client/dist/javascript/
dist/js/
dist/javascript/
src/javascript/thirdparty
js/
javascript/
可以使用在线服务如 样式向导:Google 地图 API 生成样式
标记图像
由于 Google 需要从服务器下载图像,因此此功能在本地不起作用。
可以使用与样式类似的方式使用自定义标记图像来匹配地图的风格。可以将名为 mapIcon
的图像(扩展名为 png
、jpg
、jpeg
或 gif
)放入主题的以下任何文件夹中
client/dist/img/
client/dist/images/
dist/img/
dist/images/
img/
images/
DistanceDataExtension
应与 AddressDataExtension 一起使用 DistanceDataExtension。它单独可行的情况仅限于扩展的数据对象具有 Lat
和 Lng
字段。
DistanceDataExtension 将为从地址到数据对象的距离添加一个虚拟字段。最初,要检查距离的地址来自当前控制器。可以通过在数据对象或扩展上实现 updateAddressValue($address)
来更改此。
/** * Always get the distance from Neuschwanstein Castle */ public function updateAddressValue(&$address) { $address = 'Neuschwansteinstraße 20, 87645 Schwangau, Germany'; }
维护者
错误跟踪器
错误将在此存储库的问题部分跟踪。在提交问题之前,请仔细阅读现有问题,以确保您的独特性。
如果问题看起来像是一个新错误
- 创建一个新的问题
- 描述重现您问题的步骤以及预期的结果。单元测试、截图和屏幕录制在这里可能会有所帮助。
- 尽可能详细地描述您的环境:SilverStripe版本、浏览器、PHP版本、操作系统、任何已安装的SilverStripe模块。
请直接向模块维护者报告安全问题。请不要在错误跟踪器中提交安全问题。
开发和贡献
如果您想为此模块做出贡献,请确保您发起一个拉取请求并与模块维护者进行讨论。