{"id":25631670,"url":"https://github.com/m2sd/typo3-poi-map","last_synced_at":"2026-06-13T12:30:18.817Z","repository":{"id":33199426,"uuid":"150472704","full_name":"m2sd/typo3-poi-map","owner":"m2sd","description":"A Typo3 extensions which adds categorized points of interest with GoogleMaps integration","archived":false,"fork":false,"pushed_at":"2023-01-03T15:18:39.000Z","size":1692,"stargazers_count":0,"open_issues_count":20,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-04-03T10:43:19.321Z","etag":null,"topics":["google-maps","point-of-interest","typo3-cms-extension"],"latest_commit_sha":null,"homepage":null,"language":"PHP","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/m2sd.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-09-26T18:35:21.000Z","updated_at":"2024-04-03T10:43:19.321Z","dependencies_parsed_at":"2023-01-14T23:52:49.452Z","dependency_job_id":null,"html_url":"https://github.com/m2sd/typo3-poi-map","commit_stats":null,"previous_names":[],"tags_count":12,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m2sd%2Ftypo3-poi-map","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m2sd%2Ftypo3-poi-map/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m2sd%2Ftypo3-poi-map/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/m2sd%2Ftypo3-poi-map/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/m2sd","download_url":"https://codeload.github.com/m2sd/typo3-poi-map/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240234377,"owners_count":19769369,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["google-maps","point-of-interest","typo3-cms-extension"],"created_at":"2025-02-22T20:28:53.096Z","updated_at":"2026-06-13T12:30:18.776Z","avatar_url":"https://github.com/m2sd.png","language":"PHP","funding_links":[],"categories":[],"sub_categories":[],"readme":"# typo3-poi-map\n\nA Typo3 extensions which adds categorized points of interest with GoogleMaps and SnazzyInfoWindow integration.\n\n## Installation\n\nThe extension is tested in composer mode but, like all composer extensions, should work in classic mode without any hassle.\n\n### Composer mode\n\nJust require the extension from the command line.\n\n```bash\ncomposer require m2s/typo3-poi-map\n```\n\n### Classic mode\n\n1. Download the latest release and extract it into a folder named `poi_map` in your extension folder.\n2. Go to the extension manager in the typo3 backend and enable the extension.\n\n## Setup\n\n### TypoScript\n\nInclude the static typoscirpt in your root template or an extension template of your choice.\n\n### Extension configuration\n\n#### Basic settings\n\n| Setting            | Type        | Description                                                                                                                                                                                          | Default     |\n| ------------------ | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| maps.api_key       | `text`      | **[`Maps JavaScript API` key](https://developers.google.com/maps/documentation/javascript/get-api-key):** If not set the maps implementations will be rendered in development mode                   | `''`        |\n| maps.default_type  | `select`    | **[`mapTypeId`](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.mapTypeId):** The default display type for google maps rendered by the plugin                   | `'roadmap'` |\n| maps.default_style | `text/json` | **[`styles`](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.styles):** A json string that defines how the google map is rendered, only works if api key is set | `''`        |\n\n**Hint:** Visit [SnazzyMaps](https://snazzymaps.com/) for some awesome styles.\n\n#### Content settings\n\n| Setting                      | Type       | Description                                                                                                                                                                                         | Default |\n| ---------------------------- | ---------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------- |\n| maps.use_typoscript_language | `checkbox` | **Use Typo3 language:** If set maps will be loaded using the language code from the typoscript configuration (by default google maps use the browser preferences to determine the display language) | `false` |\n\n**ATTENTION:** Please be sure to set the [`config.language` property in your Typoscript](https://docs.typo3.org/typo3cms/TyposcriptReference/Setup/Config/Index.html#language) appropiately, if you want to use this setting\n\n#### Advanced Settings\n\n| Setting                 | Type        | Description                                                                                                                                                                                                                 | Default     |\n| ----------------------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |\n| maps.default_options    | `text/json` | **Default [maps options](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions):** The `styles` option is overwritten by the `maps.default_style` setting if set to anything other than `''` | `''`        |\n| wizard.api_key          | `text`      | **[`Maps JavaScript API` key](https://developers.google.com/maps/documentation/javascript/get-api-key) for the backend wizard:** Is ignored if `wizard.use_frontend_api` is set                                             | `''`        |\n| wizard.use_frontend_api | `checkbox`  | **Use frontend API key for backend wizard:** If set the API key defined for the frontend implementation is used for the backend                                                                                             | `false`     |\n| wizard.center           | `text/csv`  | **Default [center](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.center) for backend wizard:** Commaseparated geo coordinates                                                        | `'0.0,0.0'` |\n| wizard.zoom             | `int+`      | **Default [zoom](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.zoom) for backend wizard:** A value between `1` and `18`                                                              | `1`         |\n\nIn most cases it is advisable to not use an api key for the backend to conserve quota, because you will be [billed](https://developers.google.com/maps/billing/understanding-cost-of-use#dynamic-maps) after 28,000 loads per day.  \nWith that said however it can be useful to use a different api key for the backend to track the usage separately.\n\n### Constants\n\nThese settings won't be available if you did not include the static typoscript in your template ([see above](#TypoScript)).\n\n#### Template settings\n\nAs is common with plugin extensions you can customize the templates by adding your own root paths and overwriting the templates.\n\n| Setting          | Type   | Desciption        | Default |\n| ---------------- | ------ | ----------------- | ------- |\n| templateRootPath | `text` | Path to templates | `''`    |\n| partialRootPath  | `text` | Path to partials  | `''`    |\n| layoutRootPath   | `text` | Path to layouts   | `''`    |\n\n#### Persitence settings\n\nThis setting does not have any effect at the moment as data insertion is done via the List module.  \nHowever it is recommended to set this to the UID of the page in which you keep your [Place](#Places) records.\n\n| Setting    | Type   | Description         | Default |\n| ---------- | ------ | ------------------- | ------- |\n| storagePid | `int+` | Default storage PID | `0`     |\n  \n#### Additional settings\n\nThese settings provide defaults for all maps rendered by the plugin.\n\n| Setting              | Type        | Description                                                                                                                                                                                                                                                        | Default   |\n| -------------------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | --------- |\n| default_type         | `select`    | **[`mapTypeId`](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.mapTypeId):** The default display type for google maps rendered by the plugin, will overwrite extension setting if set to anything but `inherit`              | `inherit` |\n| default_marker_icon  | `text/url`  | **Default marker icon:** An absolute URL either to an external resource (including schema and host) or to a local resource (starting with `/`) to use as default custom marker                                                                                     | `''`      |\n| default_info_options | `text/json` | **[SnazzyInfoWindow options](https://github.com/atmist/snazzy-info-window#options):** A json string that provides the default options for info windows rendered by the plugin                                                                                      | `''`      |\n| default_style        | `text/json` | **[`styles`](https://developers.google.com/maps/documentation/javascript/reference/map#MapOptions.styles):** A json string that defines how the google map is rendered, only works if api key is set, will overwrite extension setting if set to anything but `''` | `''`      |\n\n## Places\n\nThe extension adds a new record type.  \nPlace records can be added from the List module in the typo3 backend.  \nPlaces can be used as markers for the maps.\n\n## Maps\n\nThe extension adds a new list type (plugin).  \nThe plugin has to layouts:\n\n* **List:** Lists all Places corresponding to the filter settings\n* **Map:** Generates a google map with all Places corresponding to the filter settings\n\n## ViewHelper\n\nThe extension adds a new ViewHelper.  \nThe map view helper can be used to render a google map.\n\n### Maps specific attributes\n\n| Property         | Type      | Description                                                     | Default                |\n| ---------------- | --------- | --------------------------------------------------------------- | ---------------------- |\n| places           | `array`   | A set of places to be placed on the map as markers              | `[]`                   |\n| as               | `string`  | The name for the iteration variable in the info window template | `'place'`              |\n| options          | `array`   | Configuration array for the map itself                          | `default_options`      |\n| mapStyles        | `array`   | Configuration array for the styles option of the map            | `default_style`        |\n| type             | `string`  | The type of map that should be displayed                        | `default_type`         |\n| zoom             | `integer` | The zoom of the map (between `1` and `18`)                      | `1`                    |\n| center           | `string`  | The center of the map (comma separated geo coordinates)         | `'0.0,0.0'`            |\n| enableInfo       | `boolean` | Enables/disables on click info windows                          | `true`                 |\n| enableInfoSingle | `boolean` | Enables/disables multiple open info windows                     | `true`                 |\n| infoOptions      | `array`   | Additional configuration for SnazzyInfoWindow instances         | `default_info_options` |\n| markerIcon       | `string`  | Sets a custom marker icon for all markers on this map           | `default_marker_icon`  |\n\n### Default tag attributes\n\n| Property             | Description                                                                                         |\n| -------------------- | --------------------------------------------------------------------------------------------------- |\n| class                | CSS class(es) for this element                                                                      |\n| dir                  | Text direction for this HTML element. Allowed strings: \"ltr\" (left to right), \"rtl\" (right to left) |\n| lang                 | Language for this element. Use short names specified in RFC 1766                                    |\n| style                | Individual CSS styles for this element                                                              |\n| title                | Tooltip text of element                                                                             |\n| accessKey            | Keyboard shortcut to access this element                                                            |\n| tabindex             | Specifies the tab order of this element                                                             |\n| onclick              | JavaScript evaluated for the onclick event                                                          |\n| additionalAttributes | An array of additional attributes for the maps container                                            |\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm2sd%2Ftypo3-poi-map","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fm2sd%2Ftypo3-poi-map","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fm2sd%2Ftypo3-poi-map/lists"}