【Ruby】Fontawesome 5 でマップに表示するマーカーを生成するGem

しずおかオンラインでRubyでWebサービスを開発しているKazuomatzです。いろいろな案件でGoogle MapやOpen Street Map、iOSのマップなどにマーカーを立てるわけですが、Google Mapのデフォルトのピンでは味気なく、かといって、一点、一点デザイナーに発注するのもあれなので、FontAwesomeを使ってマーカーを合成するライブラリーを作りました。

# AwesomeMapMarker
<img alt="icons.png" src="https://qiita-image-store.s3.amazonaws.com/0/39570/87ab48b0-f061-ddff-8056-2d5e44ddeff5.png" width="75%">

AwesomeMapMarkerは、Google Map、Open Street Map、iOSのマップなどのマップに表示するマーカーをFontAwesomeを使って生成するライブラリーです。FontAwesomeのアイコンとマーカーの色、サイズを指定できます。
[GitHub](https://github.com/kazuomatz/AwesomeMapMarker)

## 必要要件
- ImageMagick 6.9x
- MiniMagick

## インストール方法

Bundleでインストール可能です。

```ruby:Gemfile
gem 'awesome_map_marker'
```

## 使い方


```ruby:sample.rb
require 'awesome_map_marker'

image = AwesomeMapMarker.generate

#imageは、MiniMagick::Imageクラスのインスタンスです。
image.write('/path/to/save')
```

パラメータを指定しない場合は、以下のマーカーが生成されます。

<img src="https://user-images.githubusercontent.com/2704723/52211823-4f47f280-28ce-11e9-985c-da6eb7a97f30.png"/>

### パラメータ

パラメータはHashです。

|  パラメータ|  説明  |
| ---- | ---- |
|  :type&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;|  Fontawsomeのタイプを指定します。指定可能はタイプは、:fas(solid)、:fab(brand）の２種類のみです。省略時は、:fas(Solid)です。|
|  :name&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  |  Fontawesomeのフォン名（"fa-smile-beam"など）を指定します. 省略時は "fa-map-marker-alt"です。 |
|  :fill_color&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; |  マーカーの色を16進数で指定します。例："#ff0000". 省略時は ![#1589F0](https://placehold.it/15/e45340/000000?text=+)  "#e45340"です。 |
|  :size&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;  |  正方形の辺の長さを指定します。省略時は128です。1024以上を指定すると1024と見做します。|


### 戻り値

戻り値は MiniMagick::Imageのインスタンスです。
サイズを0に指定した場合や、fontawesomeに定義されていないnameを指定した場合はnilが返ります。


#### Solid iconの生成

```ruby
image = AwesomeMapMarker.generate(type: :fas,
                                  name: 'fa-smile-beam',
                                  fill_color: '#5e4fab')
```

<img src="https://user-images.githubusercontent.com/2704723/52199531-bc955c80-28a9-11e9-9d60-77f562fd9e8d.png" width="128"/>


#### Brand iconの生成

```ruby
image = AwesomeMapMarker.generate(type: :fab,
                                  name: 'fa-github',
                                  fill_color: '#000000')
```

<img src="https://user-images.githubusercontent.com/2704723/52200171-5a3d5b80-28ab-11e9-9958-6e5142bc8c12.png" width="128"/>

#### サイズ指定

```ruby
image = AwesomeMapMarker.generate( type: :fas,
                                   name: 'fa-pastafarianism',
                                   fill_color: '#b23892',
                                   size: 64)
```
<img src="https://user-images.githubusercontent.com/2704723/52200581-81485d00-28ac-11e9-97f8-7aad9e251152.png" width="64"/>


色とアイコンの組み合わせで様々なマーカーが生成できるので、いろいろと活用できると思いますので、ぜひ使ってみてください。