martimiz / silverstripe-googledirections
创建Google地图并启用页面上的多个链接的Google路线,完全本地化
Requires
- silverstripe/cms: ~3.1
- silverstripe/framework: ~3.1
This package is not auto-updated.
Last update: 2021-07-23 23:02:43 UTC
README
介绍
在每页创建一个或多个Google地图,包括(可选)从用户位置到您位置的方向。定义一个地图作为启动时显示的默认地图。或者创建多个链接在页面上,动态加载不同的地图,每次点击标记时都有自己的信息
您可以直接使用CMS中的简码创建动态链接,或者手动创建链接和可选的JavaScript。该模块完全本地化且与旧版稳定版0.1兼容
本版本新增功能
- 在每个页面上从CMS内创建地图
- 设置默认地图,在页面启动时显示
- 添加文本和图像,在点击定位器时显示
- 使用简码创建动态链接以在不同地图之间切换
- 禁用路线(全局)
其他选项
- 使用浏览器语言或当前区域设置(默认)来显示路线
- 手动创建动态链接
- 使用自定义JavaScript
- 使用地理位置或有效地址生成地图
- 支持可翻译
要求
- SilverStripe框架3.1+和CMS 3.1+
安装
将模块复制到SilverStripe安装的根目录,并给它任何你想的名字。
设置模块
在要显示地图的页面类型的页面控制器上启用GoogleDirections扩展。在_config/googledirections.yml
Page:
extensions:
- GoogleDirections
或者使用其他页面类型。然后在您地图应放置的位置的模板中添加以下内容
$GoogleDirections
现在执行/dev/build/?flush=1
如果您想使用动态简码链接,在_config.php中设置
ShortcodeParser::get('default')
->register('GMap', array('GoogleDirections', 'link_shortcode_handler'));
然后执行mydomain/?flush=all
创建地图
现在您的页面应该有一个新的选项卡“地图”,您可以在其中创建一个或多个地图,使用地理位置或有效地址。注意:地理位置优先于地址。
默认地图
通过在地图详细信息中勾选“页面打开时显示”,该地图将成为默认地图,将在打开页面时显示。
为不同地图创建链接
您可以在页面上创建链接,这些链接可以动态打开特定的地图。如果页面上有一个或多个链接,您不一定必须
创建链接的简单方法是用 短代码
。首先您需要通过在 _config.php 中添加以下内容来启用短代码的使用
ShortcodeParser::get('default')
->register('GMap', array('GoogleDirections', 'link_shortcode_handler'));
现在创建一个短代码,使用地图的标题作为参考。以下将创建一个链接,其中地图的标题也是链接的文本。
[GMap, link='My map title']
如果您想为链接定义不同的文本
[GMap, link='My map title']Text to appear in the link[/GMap]
注意:要手动创建链接,请参阅 高级使用:手动创建链接
本地化和国际化
该模块中的PHP代码以及JavaScript都是本地化的。在这里找到语言文件
- 对于PHP: /lang/
- 对于JavaScript: /javascript/lang/
注意:原生的翻译在JavaScript和PHP语言文件中必须相等,以便占位符可以正常工作。我不确定是否应该使用占位符属性,因为在不支持此功能的浏览器中将没有其他信息。
启用/禁用路线
默认情况下,该模块为路线启用。每次显示地图时,都有一个用户可以输入其位置的表单,以计算路线并显示方向。但是,您可以通过在 _config/googledirections.yml 中禁用此功能,仅显示地图。
GoogleDirections:
directions_enabled: false
路线语言
默认情况下,模块将使用当前的 SilverStripe 区域设置来显示路线,这对于多语言网站很有用。要恢复到当前的浏览器区域设置(Google默认),请将以下内容添加到您的 GoogleDirections.yml 中
GoogleDirections:
use_browser_language: true
当使用此模块与 Translatable 模块一起使用时,最好禁用浏览器语言的使用
注意:您可能需要将其添加到您的 Page_Controller 以确保翻译正常工作
public function init() {
i18n::set_locale($this->Locale);
...
}
高级使用:手动创建链接
链接应具有 'googleDirections'
类以自动被模块识别。每个链接的位置应为一个地理位置或一个有效的地址。如果两者都存在,则使用地理位置。
如果您想手动创建链接,例如在模板中,它应该看起来像这样
<a class="GoogleDirections" data-address="Street 22 Town" data-info="My company">Show map</a>
或
<a class="GoogleDirections" data-latlngs="'52.111111, 4.111111'" data-info="My company">Show map</a>
注意:您不需要在CMS中创建任何地图才能使其工作,模块将使用链接中的数据
使用JavaScript
如果您想使用JavaScript,而不是将数据添加到链接本身,可以这样做
<a class="GoogleDirections" id="MyLink" href="#route">Show map</a>
和
$(document).ready(function() {
locations.MyLink = {
infoText: '<p><strong>My Name</strong><br>My description</p>',
address: 'My Address'
};
// define this link as the default (startup) map
showStartupMap('MyLink');
});
或
$(document).ready(function() {
locations.MyLink = {
infoText: '<p><strong>My Name</strong><br>My description</p>',
latLng: '52.111111, 4.111111'
};
});
故障排除
1. 在输入字段中输入时,原点输入的默认文本不会消失
原点输入字段的默认文本需要在两个语言文件中相等才能正常工作。(需要找到另一种方法或使用占位符属性)
如果无法正确获取正确的JavaScript区域设置,可以通过将区域设置添加到body标签中如下修复
<body lang="$ContentLocale">
维护者
- Martine Bloem (Martimiz)