richarddobron / google-maps-data-parameter-parser
PHP parser and builder for the "data" parameter (Protocol Buffers) in Google Maps URLs
Requires
- php: ^7.0 || ^8.0
Requires (Dev)
- phpunit/phpunit: >=7.0
README
ℹ️ Overview
This PHP library provides a convenient way to parse and build the 'data' parameter in Google Maps URLs, specifically the Protocol Buffer implementation. It helps extract meaningful information from the encoded 'data' parameter and allows for the construction of new 'data' parameters for Google Maps URLs.
🔗 Background
Google Maps directions URLs often contain a 'data' parameter that encodes various details, such as coordinates, waypoints, and travel modes. This library focuses on the extraction and construction of this 'data' parameter, making it easier for developers to work with Google Maps URLs programmatically.
✨ How it Works
The 'data' parameter consists of elements separated by ! marks. Each element includes an integer id, a single character alphabetic type, and a string value. The interpretation of each element depends on its properties and position in the tree structure.
🛠️ Functionality
The parser extracts the 'data' parameter and organizes it into a tree of nodes, each representing a specific element in the Protocol Buffer. This structure allows developers to easily navigate and access the encoded information.
📖 Requirements
PHP 7.0 or higher
📦 Installing
$ composer require richarddobron/google-maps-data-parameter-parser
⚡️ Usage
Parser
$data = \dobron\GoogleMapsQueryArgs::decode('!3m1!4b1!4m13!4m12!1m5!1m1!1s0x47bee19f7ccbda49:0x86dbf8c6685c9617!2m2!1d7.0982068!2d50.73743!1m5!1m1!1s0x47a84e373f035901:0x42120465b5e3b70!2m2!1d13.404954!2d52.5200066');
Example Output
{ "3": { "4": "b1" }, "4": { "4": { "1": [ { "1": { "1": "s0x47bee19f7ccbda49:0x86dbf8c6685c9617" }, "2": { "1": "d7.0982068", "2": "d50.73743" } }, { "1": { "1": "s0x47a84e373f035901:0x42120465b5e3b70" }, "2": { "1": "d13.404954", "2": "d52.5200066" } } ] } } }
Builder
$protocolBuffer = \dobron\GoogleMapsQueryArgs::encode($data);
🧪 Testing
$ composer tests
🤝 Contributing
We welcome contributions! If you'd like to help improve this project, feel free to open an issue or submit a pull request.
📜 License
The MIT License (MIT). Please see License File for more information.