1. Go to this page and download the library: Download ifha/bee-maps library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
ifha / bee-maps example snippets
use BeeDelivery\BeeMaps\MapServiceFactory;
use BeeDelivery\BeeMaps\Enums\Provider;
use BeeDelivery\BeeMaps\DTOs\Requests\AutocompleteRequest;
final class BuscaDeEndereco
{
public function __construct(private MapServiceFactory $maps) {}
public function buscar(string $texto): void
{
$sugestoes = $this->maps->autocomplete(Provider::Here)
->suggest(new AutocompleteRequest($texto, countries: ['BR']));
foreach ($sugestoes as $sugestao) {
echo $sugestao->mainText;
}
}
}
use BeeDelivery\BeeMaps\Facades\BeeMaps;
$sugestoes = BeeMaps::autocomplete(Provider::Google)->suggest($request);
new AutocompleteRequest(
query: 'Av Paulista 1000',
near: new Coordinates(-23.5615, -46.6562), // opcional
radiusMeters: 3000, // default 50000
countries: ['BR'], // default: região do config
language: 'pt-BR', // default: idioma do config
);
// tem referência (a loja, o cliente) → /autosuggest, com POI
$maps->autocomplete(Provider::Here)
->suggest(new AutocompleteRequest('Av Paulista', new Coordinates(-23.5615, -46.6562)));
// não tem referência → /autocomplete, Brasil inteiro
$maps->autocomplete(Provider::Here)
->suggest(new AutocompleteRequest('Rua Blumenau'));
$doGoogle = new PlaceReference(Provider::Google, 'ChIJ...');
$maps->geocoding(Provider::Here)->lookup($doGoogle);
// PlaceReferenceProviderMismatchException
use BeeDelivery\BeeMaps\DTOs\Requests\PlaceSearchRequest;
$lugares = BeeMaps::placeSearch(Provider::Google)->search(
new PlaceSearchRequest('farmacia', new Coordinates(-23.5615, -46.6562)),
);
foreach ($lugares as $lugar) {
echo $lugar->name, ' — ', $lugar->address->formatted, PHP_EOL;
}
use BeeDelivery\BeeMaps\DTOs\Requests\RouteRequest;
use BeeDelivery\BeeMaps\Enums\TravelMode;
$rota = BeeMaps::routing(Provider::Here)->route(new RouteRequest(
origin: new Coordinates(-23.5615, -46.6562),
destination: new Coordinates(-23.5505, -46.6425),
intermediates: [new Coordinates(-23.5580, -46.6500)],
mode: TravelMode::TwoWheeler,
optimizeIntermediates: true,
$rota = BeeMaps::routing($provider)->route(new RouteRequest(
origin: new Coordinates(-23.5615, -46.6562),
destination: new Coordinates(-23.5505, -46.6333),
alternatives: 3,
));
// A rota devolvida é a preferida do provedor; as outras vêm em `alternatives`.
$maisCurta = min(array_map(
fn (Route $r) => $r->distance->meters,
[$rota, ...$rota->alternatives],
));
use BeeDelivery\BeeMaps\DTOs\Requests\RouteMatrixRequest;
$matriz = BeeMaps::routeMatrix(Provider::Google)->matrix(new RouteMatrixRequest(
origins: [$origemA, $origemB],
destinations: [$destinoA, $destinoB],
));
// Busque por par — nunca por posição: o Google devolve os elementos fora de ordem.
$entrada = $matriz->entry(originIndex: 0, destinationIndex: 1);
if ($entrada->reachable) {
echo $entrada->distance->kilometers(), ' km', PHP_EOL;
}
use BeeDelivery\BeeMaps\DTOs\Requests\OptimizeWaypointsRequest;
use BeeDelivery\BeeMaps\Enums\OptimizationObjective;
$resultado = BeeMaps::routeOptimization(Provider::Here)->optimize(
new OptimizeWaypointsRequest($origem, $destino, $paradas),
);
// $order indexa $paradas, e é sempre permutação completa dela.
$reordenadas = array_map(fn (int $i) => $paradas[$i], $resultado->order);
echo $resultado->distance->kilometers(), ' km em ', $resultado->duration->minutes(), ' min', PHP_EOL;
// Fim fixo: sai da origem, passa pelas paradas, termina em $destino.
new OptimizeWaypointsRequest($origem, $destino, $paradas);
// Volta ao ponto de partida: basta o destino ser a origem.
new OptimizeWaypointsRequest($origem, $origem, $paradas);
// Tour aberto: termina na ultima parada que a otimizacao escolher.
new OptimizeWaypointsRequest($origem, null, $paradas);
new OptimizeWaypointsRequest($origem, $destino, $paradas, objective: OptimizationObjective::MinDistance);
$resultado->strategy; // 'google.matrix_tsp'
new AutocompleteRequest('Av Paulista', countries: ['BR']); // ok
new AutocompleteRequest('Av Paulista', countries: ['BRA']); // ok
new AutocompleteRequest('Av Paulista', countries: ['XX']); // InvalidRequestException
use BeeDelivery\BeeMaps\Support\Events\MapRequestCompleted;
Event::listen(MapRequestCompleted::class, function (MapRequestCompleted $e) {
Log::info('maps', [
'provider' => $e->provider->value,
'service' => $e->service->value,
'status' => $e->httpStatus, // 0 quando houve falha de conexão
'ms' => $e->durationMs,
'chamadas' => $e->upstreamCalls,
]);
});
'defaults' => [
'language' => env('BEE_MAPS_LANGUAGE', 'pt-BR'),
'region' => env('BEE_MAPS_REGION', 'BR'), // usada quando countries vem vazio
],
'http' => [
'timeout' => 10,
'connect_timeout' => 3,
'attempts' => 2, // TOTAL de tentativas, incluindo a primeira
'retry_delay_ms' => 200,
],