xref: /webtrees/app/Module/MapLinkOpenStreetMap.php (revision bc251ebe44f96e2ace3e34d8e38fd186f992618e)
1<?php
2
3/**
4 * webtrees: online genealogy
5 * Copyright (C) 2021 webtrees development team
6 * This program is free software: you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation, either version 3 of the License, or
9 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program. If not, see <https://www.gnu.org/licenses/>.
16 */
17
18declare(strict_types=1);
19
20namespace Fisharebest\Webtrees\Module;
21
22use Fisharebest\Webtrees\I18N;
23
24use function view;
25
26/**
27 * Class MapLinkOpenStreetMap - show locations in external maps
28 */
29class MapLinkOpenStreetMap extends AbstractModule implements ModuleMapLinkInterface
30{
31    use ModuleMapLinkTrait;
32
33    /**
34     * Name of the map provider.
35     *
36     * @return string
37     */
38    protected function providerName(): string
39    {
40        return I18N::translate('OpenStreetMap™');
41    }
42
43    /**
44     * @return string
45     */
46    protected function icon(): string
47    {
48        return view('icons/openstreetmap');
49    }
50
51    /**
52     * @param \Fisharebest\Webtrees\Fact $fact
53     *
54     * @return string
55     */
56    protected function mapUrl(\Fisharebest\Webtrees\Fact $fact): string
57    {
58        $latitude  = $fact->latitude();
59        $longitude = $fact->longitude();
60
61        // mlat/mlon is the marker postion
62        return 'https://www.openstreetmap.org/?mlat=' . $latitude . '&mlon=' . $longitude . '#map=10/' . $latitude . '/' . $longitude;
63    }
64}
65