Giter VIP home page Giter VIP logo

laravel-maps-fork's Introduction

Maps for your Laravel application

GitLab Repository Laravel Version Latest Stable Version StyleCI License Total Downloads

Using this package you can easily display maps on your website.

Supported map services:

  • Google Maps
  • OpenStreetMap
  • Bing Maps
  • MapQuest
  • Yandex Maps
  • MapKit (beta)

Note: Yandex Maps API does not work in Chrome.

For Laravel 5.5 use version 1.0.3

Features

Google Maps OpenStreetMap Bing Maps MapQuest Yandex Maps MapKit
Map
Markers
Marker Links
Marker Popups
Custom Marker Icons
Marker Click Event

Installation

This package can be installed through Composer.

composer require gonoware/laravel-maps

Laravel 5.5 uses Package Auto-Discovery, so doesn't require you to manually add the ServiceProvider.

Publish the compiled assets to public/vendor/maps with one of these commands:

php artisan vendor:publish --tag=maps
php artisan vendor:publish --provider="GoNoWare\Maps\MapsServiceProvider" --tag=public

When updating, use the --force switch to overwrite existing assets:

php artisan vendor:publish --tag=maps --force

Optionally, you can also publish the config file of this package with this command to config/vendor/maps.php:

php artisan vendor:publish --provider="GoNoWare\Maps\MapsServiceProvider" --tag=config

Usage

Load the map styles by adding the following directive to your Blade template before the </head> closing tag.

@mapstyles

Then add the following directive to your Blade template before the </body> closing tag, to load the map scripts.

@mapscripts

Basic Map

Display a map by adding the @map directive to your Blade template.

@map([
    'lat' => 48.134664,
    'lng' => 11.555220,
    'zoom' => 6,
])

Map With Markers

You can also show markers / pins / annotations:

@map([
    'lat' => 48.134664,
    'lng' => 11.555220,
    'zoom' => 6,
    'markers' => [
        [
            'title' => 'Go NoWare',
            'lat' => 48.134664,
            'lng' => 11.555220,
        ],
    ],
])

Marker Links

Open a url when a marker is clicked.

@map([
    'lat' => 48.134664,
    'lng' => 11.555220,
    'zoom' => 6,
    'markers' => [
        [
            'title' => 'Go NoWare',
            'lat' => 48.134664,
            'lng' => 11.555220,
            'url' => 'https://gonoware.com',
        ],
    ],
])

Marker Popups

Show a popup when a marker is clicked. The popup attribute may contain HTML markup.

@map([
    'lat' => 48.134664,
    'lng' => 11.555220,
    'zoom' => 6,
    'markers' => [
        [
            'title' => 'Go NoWare',
            'lat' => 48.134664,
            'lng' => 11.555220,
            'popup' => '<h3>Details</h3><p>Click <a href="https://gonoware.com">here</a>.</p>',
        ],
    ],
])

Custom Marker Icons

Show a custom marker icon. Absolute and relative URLs are supported.

@map([
    'lat' => 48.134664,
    'lng' => 11.555220,
    'zoom' => 6,
    'markers' => [
        [
            'title' => 'Go NoWare',
            'lat' => 48.134664,
            'lng' => 11.555220,
            'url' => 'https://gonoware.com',
            'icon' => 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
        ],
    ],
])

Additionally you may also specify the icon image size and anchor in pixels. The image will be aligned so that the tip of the icon is at the marker's geographical location.

@map([
    'lat' => 48.134664,
    'lng' => 11.555220,
    'zoom' => 6,
    'markers' => [
        [
            'title' => 'Go NoWare',
            'lat' => 48.134664,
            'lng' => 11.555220,
            'url' => 'https://gonoware.com',
            'icon' => 'https://developers.google.com/maps/documentation/javascript/examples/full/images/beachflag.png',
            'icon_size' => [20, 32],
            'icon_anchor' => [0, 32],
        ],
    ],
])

Styling

To adjust the height of the map use CSS:

.gnw-map-service {
    height: 750px;
}

Change the background of the map container:

.gnw-map-service__osm {
    background: rgb(221, 221, 221);
}

Fade in by default when using Bootstrap 3.3.7 or 4+. To replicate or modify the animation use following CSS:

.gnw-map.fade {
    transition: opacity .15s linear;
}
.gnw-map.fade:not(.show) {
    opacity: 0;
}

Events

Map Initialized

The event LaravelMaps:MapInitialized will be dispatched when a map and its markers were initialized. The DOM element, map, markers and service name can be accessed via the event details.

window.addEventListener('LaravelMaps:MapInitialized', function (event) {
   var element = event.detail.element;
   var map = event.detail.map;
   var markers = event.detail.markers;
   var service = event.detail.service;
   console.log('map initialized', element, map, markers, service);
});

Please refer to the respective documentation for advanced customization:

Marker Clicked

The event LaravelMaps:MarkerClicked will be dispatched when a marker was clicked. The DOM element, map, marker and service name can be accessed via the event details.

window.addEventListener('LaravelMaps:MarkerClicked', function (event) {
    var element = event.detail.element;
    var map = event.detail.map;
    var marker = event.detail.marker;
    var service = event.detail.service;
    console.log('marker clicked', element, map, marker, service);
});

Changelog

Please see CHANGELOG for more information what has changed recently.

Contributing

Please see CONTRIBUTING for details.

Security

If you discover any security related issues, please email [email protected] instead of using the issue tracker.

Credits

License

MIT

Copyright (c) 2018-present Go NoWare

FOSSA Status

laravel-maps-fork's People

Contributors

emanuelmutschlechner avatar ivliev avatar juancruzsaldana avatar larswiegers avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.