PHPackages                             innomedia/bingmaps - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. innomedia/bingmaps

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

innomedia/bingmaps
==================

Silverstripe 4 Bing Maps Implementation

1.0.4(3mo ago)01.2k↓50%1[1 issues](https://github.com/innomedia/bingmaps/issues)[3 PRs](https://github.com/innomedia/bingmaps/pulls)BSD-3-ClausePHP

Since Jun 29Pushed 3mo ago2 watchersCompare

[ Source](https://github.com/innomedia/bingmaps)[ Packagist](https://packagist.org/packages/innomedia/bingmaps)[ RSS](/packages/innomedia-bingmaps/feed)WikiDiscussions master Synced 1mo ago

READMEChangelog (10)Dependencies (4)Versions (46)Used By (0)

SilverStripe Azure Maps Abstraction
===================================

[](#silverstripe-azure-maps-abstraction)

This module provides Azure Maps functionality (migrated from Bing Maps)

Installation
------------

[](#installation)

```
composer require innomedia/bingmaps
```

Configuration
-------------

[](#configuration)

Go to  and follow instructions to get an Azure Maps Subscription Key and enter it inside the SiteConfig of your page under "Azure Maps" tab.

**Note:** This module has been migrated from Bing Maps to Azure Maps while maintaining API compatibility. All method names remain the same for drop-in replacement.

Usage
-----

[](#usage)

```
    //Map Constructor has 3 Optional Parameters
    //$ID - In case there are multiple Maps on one Page and that causes Problems
    //$loadOnStartClass - In case you want to wait for pageLoad to reduce initial page Loading times then afterwards enable Scriptblock via JS
    //$Debug - true disables minification/removing redundant spaces and new line characters
    $map = bingMap\Map::createMap() //
        ->SetPosition(bingMap\Coordinates::GetCoordinates($Latitute,$Longitude)) //Optional if you just want to display a map without pins to center maps at Coordinates
        ->SetStyle("width:100%;height:400px;position:relative;") //Required CSS-Style of the container of the map
        ->SetIcon($IconURL)// Renders Icon with Url from Web (might not work localy) (Priority 1)
        ->SetBase64Icon($Icon)// Renders Icon with Base64 StringFormat "data:image/png;base64,$base64Data" adapt image/png to your needs (Priority 2)
        ->SetCenterOnPins(false) //Optional default true - adds Script that centers Map so all Pins are visible
        ->SetCenterOnPinsPadding(40) //Optional default 50 - adds Padding to pin centering map (only works without SetCenterOnPins(false))
        ->SetZoom(5) //use With SetCenterOnPins(false)
        ->SetDarkMapType() //Sets Dark Theme
        ->SetLightMapType() //Sets Light Theme (Default?)
        ->SetGrayscaleMapType()  //Sets Grayscale Theme
        ->SetMapType(MapType) //  //Sets MapType Theme in case bing adds new themes
        ->setClusterLayer(true) // enables Clusting does nor really work with custom pin icons cluster icons and custom icons are both loaded
        ->addScriptSetting("type","application/javascript"); // only needed if you use a cookie consent tool you may add additional attributes for those
        ;
    $Marker = bingMap\Marker::create($ID) //$ID - Some Number must be unique for all Markers
            ->SetPosition(bingMap\Coordinates::GetCoordinatesFromAddress("Teststreet 39 AreaCode AreaName"))
            ->SetIconURL($IconURL) // Sets IconURL (Priority: 1)
            ->SetBase64Icon($Base64String) // String format same as above (Priority: 2)
            ->SetIconVariable() // Has no parameters simply sets the default IconVariable if you just need 1 Icon for all Markers (requires Icon to be set in map) (Priority: 3)
            ->SetInfoBox($Tooltip) // For setting a tooltip to open upon click (initilization below (needs to be above in reality))
            ;
    $map->AddMarker($Marker);

    $Tooltip = bingMap\InfoBox::create()
    ->SetTitle("Title") // Sets Title of InfoBox
    ->SetDescription("Some Text") // (Semi-Optional) Sets Description of default InfoBox
    ->SetHTMLContent($HTML) // (Semi-Optional) In case you want to use a Custom InfoBox in this case add your own HTMLInfoBox.ss template adapt original one in Module
    ->SetInitialVisibility(true) // If you want to display Infobox from the get go
    ->SetPosition($Marker->GetPosition()) // Generally want to take the same as $Marker but can simply supply own Coordinates Object
    ;
    Coordinates::GetCoordinates($Latitude,$Longitude); // creates a Coordinates object with both values
    Coordinates::GetCoordinatesFromAddress(/*string*/ $Address); // creates a Coordinates object after querying Azure Maps for Lat/Lng from Address
*as of 0.2.2
    $map->DisableMouseWheelZoom(); will disable mouswheel zooming

    return $map; // return Map object to Template remember to use $MapVariable.RAW in Template

    alternatively you can also use the React component and get the data it needs with $map->GetReactData();
    If you need the data as JSON you can use $map->GetJSONReactData; (simple json_encode version of GetReactData() result for convenience)

## Migration from Bing Maps

This module has been updated to use Azure Maps instead of the discontinued Bing Maps service. The migration maintains complete API compatibility:

- All method names remain identical
- All functionality is preserved
- Only the underlying map service has changed
- Configuration now uses Azure Maps Subscription Key instead of Bing API Key
- React component has been updated to use Azure Maps Web SDK

### Breaking Changes
- **None** - This is designed as a drop-in replacement
- Simply update your Azure Maps subscription key in SiteConfig

### New Features in Azure Maps
- More reliable geocoding service
- Better performance and modern API
- Active development and support from Microsoft

```

###  Health Score

48

—

FairBetter than 95% of packages

Maintenance81

Actively maintained with recent releases

Popularity17

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity68

Established project with proven stability

 Bus Factor1

Top contributor holds 75.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~54 days

Recently: every ~25 days

Total

39

Last Release

101d ago

Major Versions

0.4.13 → 1.02025-10-30

### Community

Maintainers

![](https://www.gravatar.com/avatar/c4b6c925a833158ea12f065131daea53a49fc4b76323ad05e7b67d35821172a5?d=identicon)[chromos33](/maintainers/chromos33)

---

Top Contributors

[![chromos33](https://avatars.githubusercontent.com/u/2787884?v=4)](https://github.com/chromos33 "chromos33 (25 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (4 commits)")[![moritz-sauer-13](https://avatars.githubusercontent.com/u/43135946?v=4)](https://github.com/moritz-sauer-13 "moritz-sauer-13 (3 commits)")[![innomedia](https://avatars.githubusercontent.com/u/1412756?v=4)](https://github.com/innomedia "innomedia (1 commits)")

###  Code Quality

Static AnalysisPHPStan, Rector

Type Coverage Yes

### Embed Badge

![Health badge](/badges/innomedia-bingmaps/health.svg)

```
[![Health](https://phpackages.com/badges/innomedia-bingmaps/health.svg)](https://phpackages.com/packages/innomedia-bingmaps)
```

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
