{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "\n",
       "<style>\n",
       "    .container {\n",
       "        box-shadow: none !important;\n",
       "    }\n",
       "\n",
       "    .output_html {\n",
       "        shadow: none !important;\n",
       "        max-width: 100% !important;\n",
       "        padding: 0 !important;\n",
       "    }\n",
       "\n",
       "    .title1 {\n",
       "        color: #e74a49 !important;\n",
       "    }\n",
       "</style>\n",
       "\n",
       "<script async>\n",
       "code_show=true;\n",
       "function code_toggle() {\n",
       "  if (code_show) {\n",
       "    $('div.input').each(function(id) {\n",
       "      el = $(this).find('.cm-variable:first');\n",
       "      if (id == 0 || el.text() == 'hide_me') {\n",
       "        $(this).hide();\n",
       "      }\n",
       "    });\n",
       "    $('div.output_prompt').css('opacity', 0);\n",
       "  } else {\n",
       "    $('div.input').each(function(id) {\n",
       "      $(this).show();\n",
       "    });\n",
       "    $('div.output_prompt').css('opacity', 1);\n",
       "  }\n",
       "  code_show = !code_show\n",
       "}\n",
       "$( document ).ready(code_toggle);\n",
       "</script>\n",
       "<form action=\"javascript:code_toggle()\"><input style=\"opacity:0\" type=\"submit\" value=\"Click here to toggle on/off the raw code.\"></form>"
      ],
      "text/plain": [
       "<IPython.core.display.HTML object>"
      ]
     },
     "execution_count": 1,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from IPython.display import HTML\n",
    "\n",
    "hide_me = ''\n",
    "\n",
    "HTML('''\n",
    "<style>\n",
    "    .container {\n",
    "        box-shadow: none !important;\n",
    "    }\n",
    "\n",
    "    .output_html {\n",
    "        shadow: none !important;\n",
    "        max-width: 100% !important;\n",
    "        padding: 0 !important;\n",
    "    }\n",
    "\n",
    "    .title1 {\n",
    "        color: #e74a49 !important;\n",
    "    }\n",
    "</style>\n",
    "\n",
    "<script async>\n",
    "code_show=true;\n",
    "function code_toggle() {\n",
    "  if (code_show) {\n",
    "    $('div.input').each(function(id) {\n",
    "      el = $(this).find('.cm-variable:first');\n",
    "      if (id == 0 || el.text() == 'hide_me') {\n",
    "        $(this).hide();\n",
    "      }\n",
    "    });\n",
    "    $('div.output_prompt').css('opacity', 0);\n",
    "  } else {\n",
    "    $('div.input').each(function(id) {\n",
    "      $(this).show();\n",
    "    });\n",
    "    $('div.output_prompt').css('opacity', 1);\n",
    "  }\n",
    "  code_show = !code_show\n",
    "}\n",
    "$( document ).ready(code_toggle);\n",
    "</script>\n",
    "<form action=\"javascript:code_toggle()\"><input style=\"opacity:0\" type=\"submit\" value=\"Click here to toggle on/off the raw code.\"></form>''')\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "hideCode": false,
    "hidePrompt": false
   },
   "source": [
    "<div>\n",
    "  <a href=\"https://github.com/rafpyprog/pymaps/\" style=\"text-decoration: none\">\n",
    "  <img src=\"https://raw.githubusercontent.com/rafpyprog/pymaps/master/images/pymaps-logo-36x36.png\" style=\"margin:auto !important;text-align:center;\"/>\n",
    "  <strong><p style=\"margin:auto !important;text-align:center !important;padding:10px 10px 0px 10px !important;font-size:36px !important;color:#000000 !important;\">PyMaps</p></strong></a>\n",
    "  <p style=\"font-size:24px;text-align:center;color:#e74a49;padding:0 !important;margin:0.4em !important;\">Markers</p> </div>\n",
    "\n",
    "<div style=\"text-align:center;width:100%\">\n",
    "  <div style=\"display: inline-block;\">\n",
    "    <div style=\"float:left;margin:0.1em;\">\n",
    "      <a href=\"https://pypi.python.org/pypi/pymaps\"><img src=\"https://img.shields.io/pypi/v/pymaps.svg\"></a>\n",
    "    </div>\n",
    "    <div style=\"float:left;margin:0.1em;\">\n",
    "      <a href=\"https://pypi.python.org/pypi/pymaps\"><img src=\"https://img.shields.io/pypi/pyversions/pymaps.svg\">\n",
    "      </a>\n",
    "    </div>\n",
    "    <div style=\"float:left;margin:0.1em;\">\n",
    "        <a href=\"\"><img src=\"https://img.shields.io/pypi/l/pymaps.svg\"></a>\n",
    "    </div>\n",
    "    <div style=\"float:left;margin:0.1em;\">\n",
    "      <a href=\"https://travis-ci.org/rafpyprog/pymaps\">\n",
    "          <img src=\"https://img.shields.io/travis/rafpyprog/pymaps.svg\">\n",
    "      </a>\n",
    "    </div>\n",
    "  </div>\n",
    "</div>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "A Marker identifies a location on a map. By default, a marker uses a standard image. \n",
    "Markers can display custom images using the icon parameter."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<h1 class=\"title1\">Table of Contents</h1>\n",
    "* [Create a map with a marker](#marker1)\n",
    "* [Marker animation](#marker2)\n",
    "* [Custom icons](#marker3)\n",
    "* [Custom colors](#marker4)\n",
    "* [Custom icon from URL](#marker5)   \n",
    "* [Creating a MarkerCluster](#marker6)   "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "hideCode": false,
    "hidePrompt": false
   },
   "outputs": [],
   "source": [
    "import os\n",
    "import random\n",
    "from IPython.display import HTML, display\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"marker1\"></a>\n",
    "<h1 class=\"title1\">Create a Map with a Marker</h1>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "API_KEY = os.environ['MAPS_API_KEY']\n",
    "\n",
    "from pymaps import Map\n",
    "from pymaps.marker import Marker, MarkerCluster"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiAxMywKICAgICAgICAgICAgICAgIGNlbnRlcjoge2xhdDogLTMuODU3NiwgbG5nOiAtMzIuNDI5N30sCiAgICAgICAgICAgICAgICBtYXBUeXBlSWQ6ICdyb2FkbWFwJywKICAgICAgICAgICAgICAgIHN0cmVldFZpZXdDb250cm9sOiAxLAogICAgICAgICAgICAgICAgem9vbUNvbnRyb2w6IDEsCiAgICAgICAgICAgICAgICBkaXNhYmxlRGVmYXVsdFVJOiAwLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgIC8vIG1hcCBtYXJrZXJzCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi0zLjg1NzYsbG5nOi0zMi40Mjk3fSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiRmVybmFuZG8gZGUgTm9yb25oYSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjpudWxsLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgIC8vIGZpdEJvdW5kcyBtZXRob2QKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAvLyBNYXJrZXJDbHVzdGVyCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgCiAgICAgICAgfTsKCiAgICAgIC8vIEF0dGFjaGVzIGFuIGluZm8gd2luZG93IHRvIGEgbWFya2VyIHdpdGggdGhlIHByb3ZpZGVkIG1lc3NhZ2UKICAgICAgZnVuY3Rpb24gYXR0YWNoSW5mb1dpbmRvdyhtYXJrZXIsIG1lc3NhZ2UpIHsKICAgICAgICB2YXIgaW5mb3dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHsKICAgICAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UKICAgICAgICB9KTsKCiAgICAgICAgbWFya2VyLmFkZExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgaW5mb3dpbmRvdy5vcGVuKG1hcmtlci5nZXQoJ21hcCcpLCBtYXJrZXIpOwogICAgICAgIH0pOwogICAgICB9OwogICAgPC9zY3JpcHQ+CgogICAgCiAgICA8c2NyaXB0IGFzeW5jIGRlZmVyCiAgICAgc3JjPSJodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvanM/a2V5PUFJemFTeUItWHNfTzJhaTZ6c0FVcmg5dGtrSFBTYkNTbTc3cHdrNCZjYWxsYmFjaz1pbml0TWFwIj4KICAgIDwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPg==\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f286b128>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fernando_de_noronha = (-3.8576, -32.4297)\n",
    "m = Map(api_key=API_KEY, zoom=13)\n",
    "title = 'Fernando de Noronha'  # hover the mouse over the marker to show the title\n",
    "Marker(fernando_de_noronha, title=title).add_to(m)\n",
    "m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Lets add more markers..."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "hideCode": false,
    "hidePrompt": false
   },
   "outputs": [],
   "source": [
    "cities = {\"rome\": (41.9028, 12.4964),           \n",
    "          'paris' : (48.8566, 2.3522),\n",
    "          'madrid' : (40.4168, -3.7038),\n",
    "          'berlin' : (52.5200, 13.4050),          \n",
    "          'amsterdan' : (52.3702, 4.8952),\n",
    "          'london' : (51.509865,  -0.118092)}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "hideCode": false,
    "hidePrompt": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiA2LAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAtMTguOTksIGxuZzogLTQ0LjA0fSwKICAgICAgICAgICAgICAgIG1hcFR5cGVJZDogJ3JvYWRtYXAnLAogICAgICAgICAgICAgICAgc3RyZWV0Vmlld0NvbnRyb2w6IDAsCiAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogMSwKICAgICAgICAgICAgICAgIGRpc2FibGVEZWZhdWx0VUk6IDEsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgLy8gbWFwIG1hcmtlcnMKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDEuOTAyOCxsbmc6MTIuNDk2NH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IlJvbWUiLGxhYmVsOiIxIixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDguODU2Nixsbmc6Mi4zNTIyfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiUGFyaXMiLGxhYmVsOiIyIixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDAuNDE2OCxsbmc6LTMuNzAzOH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6Ik1hZHJpZCIsbGFiZWw6IjMiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1Mi41Mixsbmc6MTMuNDA1fSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiQmVybGluIixsYWJlbDoiNCIsYW5pbWF0aW9uOm51bGwsaWNvbjpudWxsLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjUyLjM3MDIsbG5nOjQuODk1Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkFtc3RlcmRhbiIsbGFiZWw6IjUiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1MS41MDk4NjUsbG5nOi0wLjExODA5Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkxvbmRvbiIsbGFiZWw6IjYiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAvLyBmaXRCb3VuZHMgbWV0aG9kCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICB2YXIgYm91bmRzPW5ldyBnb29nbGUubWFwcy5MYXRMbmdCb3VuZHMoe2xhdDo0MC40MTY4LGxuZzotMy43MDM4fSx7bGF0OjUyLjUyLGxuZzoxMy40MDV9KTttYXAuZml0Qm91bmRzKGJvdW5kcyk7CiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgLy8gTWFya2VyQ2x1c3RlcgogICAgICAgICAgICAgICAKCiAgICAgICAgICAgIAogICAgICAgIH07CgogICAgICAvLyBBdHRhY2hlcyBhbiBpbmZvIHdpbmRvdyB0byBhIG1hcmtlciB3aXRoIHRoZSBwcm92aWRlZCBtZXNzYWdlCiAgICAgIGZ1bmN0aW9uIGF0dGFjaEluZm9XaW5kb3cobWFya2VyLCBtZXNzYWdlKSB7CiAgICAgICAgdmFyIGluZm93aW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyh7CiAgICAgICAgICBjb250ZW50OiBtZXNzYWdlCiAgICAgICAgfSk7CgogICAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgIGluZm93aW5kb3cub3BlbihtYXJrZXIuZ2V0KCdtYXAnKSwgbWFya2VyKTsKICAgICAgICB9KTsKICAgICAgfTsKICAgIDwvc2NyaXB0PgoKICAgIAogICAgPHNjcmlwdCBhc3luYyBkZWZlcgogICAgIHNyYz0iaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT1BSXphU3lCLVhzX08yYWk2enNBVXJoOXRra0hQU2JDU203N3B3azQmY2FsbGJhY2s9aW5pdE1hcCI+CiAgICA8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4=\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f287b0b8>"
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "map = Map([-18.99, -44.04], api_key=API_KEY, zoom=6, show_pegman=False, disable_default_ui=True)\n",
    "\n",
    "for n, values  in enumerate(cities.items(), 1):    \n",
    "    city_name, latlgn = values\n",
    "    title = city_name.title() \n",
    "    Marker(latlgn, title=title, label=n).add_to(map)\n",
    "map.fit_bounds(cities.values())\n",
    "map"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"marker2\"></a>\n",
    "## Marker animation"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiA2LAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAtMTguOTksIGxuZzogLTQ0LjA0fSwKICAgICAgICAgICAgICAgIG1hcFR5cGVJZDogJ3JvYWRtYXAnLAogICAgICAgICAgICAgICAgc3RyZWV0Vmlld0NvbnRyb2w6IDAsCiAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogMSwKICAgICAgICAgICAgICAgIGRpc2FibGVEZWZhdWx0VUk6IDEsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgfSk7CgogICAgICAgICAgICAKICAgICAgICAgICAgICAgLy8gbWFwIG1hcmtlcnMKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDEuOTAyOCxsbmc6MTIuNDk2NH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IlJvbWUiLGxhYmVsOiIxIixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDguODU2Nixsbmc6Mi4zNTIyfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiUGFyaXMiLGxhYmVsOiIyIixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDAuNDE2OCxsbmc6LTMuNzAzOH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6Ik1hZHJpZCIsbGFiZWw6IjMiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1Mi41Mixsbmc6MTMuNDA1fSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiQmVybGluIixsYWJlbDoiNCIsYW5pbWF0aW9uOm51bGwsaWNvbjpudWxsLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjUyLjM3MDIsbG5nOjQuODk1Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkFtc3RlcmRhbiIsbGFiZWw6IjUiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1MS41MDk4NjUsbG5nOi0wLjExODA5Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkxvbmRvbiIsbGFiZWw6IiIsYW5pbWF0aW9uOmdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UsaWNvbjpudWxsLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgIC8vIGZpdEJvdW5kcyBtZXRob2QKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgIHZhciBib3VuZHM9bmV3IGdvb2dsZS5tYXBzLkxhdExuZ0JvdW5kcyh7bGF0OjQwLjQxNjgsbG5nOi0zLjcwMzh9LHtsYXQ6NTIuNTIsbG5nOjEzLjQwNX0pO21hcC5maXRCb3VuZHMoYm91bmRzKTsKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAvLyBNYXJrZXJDbHVzdGVyCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgCiAgICAgICAgfTsKCiAgICAgIC8vIEF0dGFjaGVzIGFuIGluZm8gd2luZG93IHRvIGEgbWFya2VyIHdpdGggdGhlIHByb3ZpZGVkIG1lc3NhZ2UKICAgICAgZnVuY3Rpb24gYXR0YWNoSW5mb1dpbmRvdyhtYXJrZXIsIG1lc3NhZ2UpIHsKICAgICAgICB2YXIgaW5mb3dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHsKICAgICAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UKICAgICAgICB9KTsKCiAgICAgICAgbWFya2VyLmFkZExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgaW5mb3dpbmRvdy5vcGVuKG1hcmtlci5nZXQoJ21hcCcpLCBtYXJrZXIpOwogICAgICAgIH0pOwogICAgICB9OwogICAgPC9zY3JpcHQ+CgogICAgCiAgICA8c2NyaXB0IGFzeW5jIGRlZmVyCiAgICAgc3JjPSJodHRwczovL21hcHMuZ29vZ2xlYXBpcy5jb20vbWFwcy9hcGkvanM/a2V5PUFJemFTeUItWHNfTzJhaTZ6c0FVcmg5dGtrSFBTYkNTbTc3cHdrNCZjYWxsYmFjaz1pbml0TWFwIj4KICAgIDwvc2NyaXB0PgogIDwvYm9keT4KPC9odG1sPg==\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f287b0b8>"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "for marker in map.children['marker']:\n",
    "    if marker.title == 'London':\n",
    "        marker.set_animation('BOUNCE')\n",
    "        marker.label = ''\n",
    "map"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"marker3\"></a>\n",
    "## Built-in custom icons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pymaps.icon import *\n",
    "from pymaps.utils import random_latlng"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "There are **8 customs** icons and **19 color sets** that you can use to customize your markers"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Custom Icons"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiAyLAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAwLjAsIGxuZzogLTEwLjB9LAogICAgICAgICAgICAgICAgbWFwVHlwZUlkOiAncm9hZG1hcCcsCiAgICAgICAgICAgICAgICBzdHJlZXRWaWV3Q29udHJvbDogMSwKICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiAxLAogICAgICAgICAgICAgICAgZGlzYWJsZURlZmF1bHRVSTogMCwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICB9KTsKCiAgICAgICAgICAgIAogICAgICAgICAgICAgICAvLyBtYXAgbWFya2VycwogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDowLGxuZzotODB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJwaW4iLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvc3BvdGxpZ2h0L3Nwb3RsaWdodF9waW5fdjJfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9zcG90bGlnaHQvc3BvdGxpZ2h0X3Bpbl92Mi0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvc3BvdGxpZ2h0L3Nwb3RsaWdodF9waW5fdjJfZG90LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9zcG90bGlnaHQvc3BvdGxpZ2h0X3Bpbl92Ml9hY2NlbnQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PUZGMDBGRixGRkMxMDcsRkY2RjAwLEZGMDBGRiZjb2xvcj1GRjAwRkY/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6MCxsbmc6LTYwfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiYWlycG9ydCIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9haXJwb3J0X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMDAwMDAwLEZGRkZGRiZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDowLGxuZzotNDB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJob3NwaXRhbCIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9ob3NwaXRhbF9IX3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMjE5NkYzLDBENDdBMSZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDowLGxuZzotMjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJob21lIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2hvbWVfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZmZmZmYsMDI3N0JELEZGRkZGRiZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDowLGxuZzowfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiZG90IixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLDAwQkNENCwwMDYwNjQmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6MCxsbmc6MjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJzdGFydCIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9jb25zdGVsbGF0aW9uX3N0YXJfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCw2NzNBQjcsMzExQjkyLGZmZmZmZiZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDowLGxuZzo0MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImhlYXJ0IixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2hlYXJ0X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsRkY1NzIyLEJGMzYwQyxmZmZmZmYmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6MCxsbmc6NjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJmbGFnIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L25pY2tuYW1lX3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsOUU5RTlFLDIxMjEyMSxmZmZmZmYmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgLy8gZml0Qm91bmRzIG1ldGhvZAogICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgIC8vIE1hcmtlckNsdXN0ZXIKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAKICAgICAgICB9OwoKICAgICAgLy8gQXR0YWNoZXMgYW4gaW5mbyB3aW5kb3cgdG8gYSBtYXJrZXIgd2l0aCB0aGUgcHJvdmlkZWQgbWVzc2FnZQogICAgICBmdW5jdGlvbiBhdHRhY2hJbmZvV2luZG93KG1hcmtlciwgbWVzc2FnZSkgewogICAgICAgIHZhciBpbmZvd2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coewogICAgICAgICAgY29udGVudDogbWVzc2FnZQogICAgICAgIH0pOwoKICAgICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICBpbmZvd2luZG93Lm9wZW4obWFya2VyLmdldCgnbWFwJyksIG1hcmtlcik7CiAgICAgICAgfSk7CiAgICAgIH07CiAgICA8L3NjcmlwdD4KCiAgICAKICAgIDxzY3JpcHQgYXN5bmMgZGVmZXIKICAgICBzcmM9Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5Qi1Yc19PMmFpNnpzQVVyaDl0a2tIUFNiQ1NtNzdwd2s0JmNhbGxiYWNrPWluaXRNYXAiPgogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1e2503358>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = Map(api_key=API_KEY)\n",
    "\n",
    "lat = 0\n",
    "lng = -80\n",
    "\n",
    "for n, shape in enumerate(SHAPES):\n",
    "    color = list(COLORS.keys())[n]   \n",
    "    icon = Icon(shape, color=color, size=2)\n",
    "    Marker([lat, lng], icon=icon, title=shape).add_to(m) \n",
    "    lng += 20    \n",
    "m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"marker4\"></a>\n",
    "## Built-in custom colors"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiAyLAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAtMS41Nzg5NDcsIGxuZzogMzcuODk0NzM3fSwKICAgICAgICAgICAgICAgIG1hcFR5cGVJZDogJ3JvYWRtYXAnLAogICAgICAgICAgICAgICAgc3RyZWV0Vmlld0NvbnRyb2w6IDEsCiAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogMSwKICAgICAgICAgICAgICAgIGRpc2FibGVEZWZhdWx0VUk6IDAsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgc3R5bGVzOiBbeyJmZWF0dXJlVHlwZSI6ImFkbWluaXN0cmF0aXZlIiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJzYXR1cmF0aW9uIjoiLTEwMCJ9XX0seyJmZWF0dXJlVHlwZSI6ImFkbWluaXN0cmF0aXZlLnByb3ZpbmNlIiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJ2aXNpYmlsaXR5Ijoib2ZmIn1dfSx7ImZlYXR1cmVUeXBlIjoibGFuZHNjYXBlIiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJzYXR1cmF0aW9uIjotMTAwfSx7ImxpZ2h0bmVzcyI6NjV9LHsidmlzaWJpbGl0eSI6Im9uIn1dfSx7ImZlYXR1cmVUeXBlIjoicG9pIiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJzYXR1cmF0aW9uIjotMTAwfSx7ImxpZ2h0bmVzcyI6IjUwIn0seyJ2aXNpYmlsaXR5Ijoic2ltcGxpZmllZCJ9XX0seyJmZWF0dXJlVHlwZSI6InJvYWQiLCJlbGVtZW50VHlwZSI6ImFsbCIsInN0eWxlcnMiOlt7InNhdHVyYXRpb24iOiItMTAwIn1dfSx7ImZlYXR1cmVUeXBlIjoicm9hZC5oaWdod2F5IiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJ2aXNpYmlsaXR5Ijoic2ltcGxpZmllZCJ9XX0seyJmZWF0dXJlVHlwZSI6InJvYWQuYXJ0ZXJpYWwiLCJlbGVtZW50VHlwZSI6ImFsbCIsInN0eWxlcnMiOlt7ImxpZ2h0bmVzcyI6IjMwIn1dfSx7ImZlYXR1cmVUeXBlIjoicm9hZC5sb2NhbCIsImVsZW1lbnRUeXBlIjoiYWxsIiwic3R5bGVycyI6W3sibGlnaHRuZXNzIjoiNDAifV19LHsiZmVhdHVyZVR5cGUiOiJ0cmFuc2l0IiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJzYXR1cmF0aW9uIjotMTAwfSx7InZpc2liaWxpdHkiOiJzaW1wbGlmaWVkIn1dfSx7ImZlYXR1cmVUeXBlIjoid2F0ZXIiLCJlbGVtZW50VHlwZSI6Imdlb21ldHJ5Iiwic3R5bGVycyI6W3siaHVlIjoiI2ZmZmYwMCJ9LHsibGlnaHRuZXNzIjotMjV9LHsic2F0dXJhdGlvbiI6LTk3fV19LHsiZmVhdHVyZVR5cGUiOiJ3YXRlciIsImVsZW1lbnRUeXBlIjoibGFiZWxzIiwic3R5bGVycyI6W3sibGlnaHRuZXNzIjotMjV9LHsic2F0dXJhdGlvbiI6LTEwMH1dfV0KLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgIC8vIG1hcCBtYXJrZXJzCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi0zMCxsbmc6MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImFtYmVyIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLEZGQzEwNyxGRjZGMDAmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTMwLGxuZzoyMH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImJsYWt3aGl0ZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCwwMDAwMDAsRkZGRkZGJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi0zMCxsbmc6NDB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJibHVlIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLDIxOTZGMywwRDQ3QTEmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTMwLGxuZzo2MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImJsdWV3aGl0ZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCwwMjc3QkQsRkZGRkZGJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi0zMCxsbmc6ODB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJjeWFuIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLDAwQkNENCwwMDYwNjQmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTEwLGxuZzowfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiZGVlcHB1cnBsZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCw2NzNBQjcsMzExQjkyJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi0xMCxsbmc6MjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJkZWVwb3JhbmdlIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLEZGNTcyMixCRjM2MEMmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTEwLGxuZzo0MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImdyYXkiLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0X3NoYWRvdy0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvcXVhbnR1bS9waW5sZXQvZG90X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsOUU5RTlFLDIxMjEyMSZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDotMTAsbG5nOjYwfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiZ3JlZW4iLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0X3NoYWRvdy0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvcXVhbnR1bS9waW5sZXQvZG90X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsNENBRjUwLDFCNUUyMCZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDotMTAsbG5nOjgwfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiaW5kaWdvIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLDNGNTFCNSwxQTIzN0UmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6MTAsbG5nOjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJsaWdodGJsdWUiLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0X3NoYWRvdy0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvcXVhbnR1bS9waW5sZXQvZG90X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMDNBOUY0LDAxNTc5QiZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDoxMCxsbmc6MjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJsaWdodGdyZWVuIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2RvdF9waW5sZXQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PWZmMDAwMDAwLDhCQzM0QSwzMzY5MUUmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6MTAsbG5nOjQwfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToibGltZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCxDRERDMzksODI3NzE3JmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjEwLGxuZzo2MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6Im9yYW5nZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCxGRjk4MDAsRTY1MTAwJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjEwLGxuZzo4MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6InBpbmsiLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0X3NoYWRvdy0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvcXVhbnR1bS9waW5sZXQvZG90X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsRTkxRTYzLDg4MEU0RiZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDozMCxsbmc6MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6InB1cnBsZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCw5QzI3QjAsNEExNDhDJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjMwLGxuZzoyMH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6InJlZCIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCxlYTQzMzUsOTYwYTBhJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjMwLGxuZzo0MH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6InRlYWwiLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0X3NoYWRvdy0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvcXVhbnR1bS9waW5sZXQvZG90X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMDA5Njg4LDAwNEQ0MCZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDozMCxsbmc6NjB9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJ5ZWxsb3ciLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0X3NoYWRvdy0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3RhY3RpbGUvcGlubGV0LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvcXVhbnR1bS9waW5sZXQvZG90X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsRkZFQjNCLEY1N0YxNyZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAgICAvLyBmaXRCb3VuZHMgbWV0aG9kCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgLy8gTWFya2VyQ2x1c3RlcgogICAgICAgICAgICAgICAKCiAgICAgICAgICAgIAogICAgICAgIH07CgogICAgICAvLyBBdHRhY2hlcyBhbiBpbmZvIHdpbmRvdyB0byBhIG1hcmtlciB3aXRoIHRoZSBwcm92aWRlZCBtZXNzYWdlCiAgICAgIGZ1bmN0aW9uIGF0dGFjaEluZm9XaW5kb3cobWFya2VyLCBtZXNzYWdlKSB7CiAgICAgICAgdmFyIGluZm93aW5kb3cgPSBuZXcgZ29vZ2xlLm1hcHMuSW5mb1dpbmRvdyh7CiAgICAgICAgICBjb250ZW50OiBtZXNzYWdlCiAgICAgICAgfSk7CgogICAgICAgIG1hcmtlci5hZGRMaXN0ZW5lcignY2xpY2snLCBmdW5jdGlvbigpIHsKICAgICAgICAgIGluZm93aW5kb3cub3BlbihtYXJrZXIuZ2V0KCdtYXAnKSwgbWFya2VyKTsKICAgICAgICB9KTsKICAgICAgfTsKICAgIDwvc2NyaXB0PgoKICAgIAogICAgPHNjcmlwdCBhc3luYyBkZWZlcgogICAgIHNyYz0iaHR0cHM6Ly9tYXBzLmdvb2dsZWFwaXMuY29tL21hcHMvYXBpL2pzP2tleT1BSXphU3lCLVhzX08yYWk2enNBVXJoOXRra0hQU2JDU203N3B3azQmY2FsbGJhY2s9aW5pdE1hcCI+CiAgICA8L3NjcmlwdD4KICA8L2JvZHk+CjwvaHRtbD4=\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f286bfd0>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = Map(api_key=API_KEY, style='grayscale')\n",
    "\n",
    "lat = -30\n",
    "lng = 0\n",
    "\n",
    "for n, color in enumerate(COLORS.keys()):\n",
    "    if n > 0 and n % 5 == 0:\n",
    "        lat += 20\n",
    "        lng -= 100\n",
    "    icon = Icon('dot', color=color, size=2)\n",
    "    Marker([lat, lng], icon=icon, title=color).add_to(m) \n",
    "    lng += 20    \n",
    "m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Customize everything !"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiAxLAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAtMzQuMTk3NjM5LCBsbmc6IC02MS4wODA0NjJ9LAogICAgICAgICAgICAgICAgbWFwVHlwZUlkOiAncm9hZG1hcCcsCiAgICAgICAgICAgICAgICBzdHJlZXRWaWV3Q29udHJvbDogMSwKICAgICAgICAgICAgICAgIHpvb21Db250cm9sOiAxLAogICAgICAgICAgICAgICAgZGlzYWJsZURlZmF1bHRVSTogMCwKICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICBzdHlsZXM6IFsKICB7CiAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgInN0eWxlcnMiOiBbCiAgICAgIHsKICAgICAgICAiY29sb3IiOiAiI2Y1ZjVmNSIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgImVsZW1lbnRUeXBlIjogImxhYmVscy5pY29uIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgInZpc2liaWxpdHkiOiAib2ZmIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAic3R5bGVycyI6IFsKICAgICAgewogICAgICAgICJjb2xvciI6ICIjNjE2MTYxIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuc3Ryb2tlIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiNmNWY1ZjUiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJhZG1pbmlzdHJhdGl2ZS5sYW5kX3BhcmNlbCIsCiAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAic3R5bGVycyI6IFsKICAgICAgewogICAgICAgICJjb2xvciI6ICIjYmRiZGJkIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZmVhdHVyZVR5cGUiOiAicG9pIiwKICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAic3R5bGVycyI6IFsKICAgICAgewogICAgICAgICJjb2xvciI6ICIjZWVlZWVlIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZmVhdHVyZVR5cGUiOiAicG9pIiwKICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiM3NTc1NzUiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJwb2kucGFyayIsCiAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgInN0eWxlcnMiOiBbCiAgICAgIHsKICAgICAgICAiY29sb3IiOiAiI2U1ZTVlNSIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgImZlYXR1cmVUeXBlIjogInBvaS5wYXJrIiwKICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiM5ZTllOWUiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJyb2FkIiwKICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAic3R5bGVycyI6IFsKICAgICAgewogICAgICAgICJjb2xvciI6ICIjZmZmZmZmIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZmVhdHVyZVR5cGUiOiAicm9hZC5hcnRlcmlhbCIsCiAgICAiZWxlbWVudFR5cGUiOiAibGFiZWxzLnRleHQuZmlsbCIsCiAgICAic3R5bGVycyI6IFsKICAgICAgewogICAgICAgICJjb2xvciI6ICIjNzU3NTc1IgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZmVhdHVyZVR5cGUiOiAicm9hZC5oaWdod2F5IiwKICAgICJlbGVtZW50VHlwZSI6ICJnZW9tZXRyeSIsCiAgICAic3R5bGVycyI6IFsKICAgICAgewogICAgICAgICJjb2xvciI6ICIjZGFkYWRhIgogICAgICB9CiAgICBdCiAgfSwKICB7CiAgICAiZmVhdHVyZVR5cGUiOiAicm9hZC5oaWdod2F5IiwKICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiM2MTYxNjEiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJyb2FkLmxvY2FsIiwKICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiM5ZTllOWUiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJ0cmFuc2l0LmxpbmUiLAogICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiNlNWU1ZTUiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJ0cmFuc2l0LnN0YXRpb24iLAogICAgImVsZW1lbnRUeXBlIjogImdlb21ldHJ5IiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiNlZWVlZWUiCiAgICAgIH0KICAgIF0KICB9LAogIHsKICAgICJmZWF0dXJlVHlwZSI6ICJ3YXRlciIsCiAgICAiZWxlbWVudFR5cGUiOiAiZ2VvbWV0cnkiLAogICAgInN0eWxlcnMiOiBbCiAgICAgIHsKICAgICAgICAiY29sb3IiOiAiI2M5YzljOSIKICAgICAgfQogICAgXQogIH0sCiAgewogICAgImZlYXR1cmVUeXBlIjogIndhdGVyIiwKICAgICJlbGVtZW50VHlwZSI6ICJsYWJlbHMudGV4dC5maWxsIiwKICAgICJzdHlsZXJzIjogWwogICAgICB7CiAgICAgICAgImNvbG9yIjogIiM5ZTllOWUiCiAgICAgIH0KICAgIF0KICB9Cl0KLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgIC8vIG1hcCBtYXJrZXJzCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi01Ny4yNjM5ODksbG5nOjEzOC43MzMyMzZ9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJwaW4gLSBsaWdodGJsdWUiLGxhYmVsOiIiLGFuaW1hdGlvbjpudWxsLGljb246Imh0dHA6Ly93d3cuZ29vZ2xlLmNvbS9tYXBzL3Z0L2ljb24vbmFtZT1hc3NldHMvaWNvbnMvc3BvdGxpZ2h0L3Nwb3RsaWdodF9waW5fdjJfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9zcG90bGlnaHQvc3BvdGxpZ2h0X3Bpbl92Mi0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvc3BvdGxpZ2h0L3Nwb3RsaWdodF9waW5fdjJfZG90LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9zcG90bGlnaHQvc3BvdGxpZ2h0X3Bpbl92Ml9hY2NlbnQtMS1zbWFsbC5wbmcmaGlnaGxpZ2h0PUZGMDBGRiwwM0E5RjQsMDE1NzlCLEZGMDBGRiZjb2xvcj1GRjAwRkY/c2NhbGU9MiIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6MTEuMjg1ODgzLGxuZzotMTA0LjgwMjc0Nn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImFpcnBvcnQgLSBsaWdodGdyZWVuIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2FpcnBvcnRfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCw4QkMzNEEsMzM2OTFFJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTEiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0Oi0zOC41MjQxNzgsbG5nOjE2LjkyNjIzNn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6Imhvc3BpdGFsIC0gY3lhbiIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9ob3NwaXRhbF9IX3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMDBCQ0Q0LDAwNjA2NCZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDotNjQuODU0NDc3LGxuZzotODYuNTc5NDczfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiaG9tZSAtIGFtYmVyIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2hvbWVfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZmZmZmYsRkZDMTA3LEZGNkYwMCZjb2xvcj1mZjAwMDAwMD9zY2FsZT0xIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDotMzAuODk1MDQ5LGxuZzotMTcxLjMzOTc3Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6ImRvdCAtIGJsdWV3aGl0ZSIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9kb3RfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCwwMjc3QkQsRkZGRkZGJmNvbG9yPWZmMDAwMDAwP3NjYWxlPTIiLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pOwogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjU3LjI1OTE0Myxsbmc6LTM3LjA4OTE1fSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToic3RhcnQgLSBhbWJlciIsbGFiZWw6IiIsYW5pbWF0aW9uOm51bGwsaWNvbjoiaHR0cDovL3d3dy5nb29nbGUuY29tL21hcHMvdnQvaWNvbi9uYW1lPWFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXRfc2hhZG93LTEtc21hbGwucG5nLGFzc2V0cy9pY29ucy9wb2kvdGFjdGlsZS9waW5sZXQtMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS9xdWFudHVtL3BpbmxldC9jb25zdGVsbGF0aW9uX3N0YXJfcGlubGV0LTEtc21hbGwucG5nJmhpZ2hsaWdodD1mZjAwMDAwMCxGRkMxMDcsRkY2RjAwLGZmZmZmZiZjb2xvcj1mZjAwMDAwMD9zY2FsZT0yIixvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDotODQuMTk5NjkzLGxuZzotODIuMTc3NTc5fSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiaGVhcnQgLSBjeWFuIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L2hlYXJ0X3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMDBCQ0Q0LDAwNjA2NCxmZmZmZmYmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MSIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTY2LjM4ODc1NSxsbmc6LTE2Mi4zMTQ0NDl9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJmbGFnIC0gYmx1ZXdoaXRlIixsYWJlbDoiIixhbmltYXRpb246bnVsbCxpY29uOiJodHRwOi8vd3d3Lmdvb2dsZS5jb20vbWFwcy92dC9pY29uL25hbWU9YXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldF9zaGFkb3ctMS1zbWFsbC5wbmcsYXNzZXRzL2ljb25zL3BvaS90YWN0aWxlL3BpbmxldC0xLXNtYWxsLnBuZyxhc3NldHMvaWNvbnMvcG9pL3F1YW50dW0vcGlubGV0L25pY2tuYW1lX3BpbmxldC0xLXNtYWxsLnBuZyZoaWdobGlnaHQ9ZmYwMDAwMDAsMDI3N0JELEZGRkZGRixmZmZmZmYmY29sb3I9ZmYwMDAwMDA/c2NhbGU9MyIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgLy8gZml0Qm91bmRzIG1ldGhvZAogICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgIC8vIE1hcmtlckNsdXN0ZXIKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAKICAgICAgICB9OwoKICAgICAgLy8gQXR0YWNoZXMgYW4gaW5mbyB3aW5kb3cgdG8gYSBtYXJrZXIgd2l0aCB0aGUgcHJvdmlkZWQgbWVzc2FnZQogICAgICBmdW5jdGlvbiBhdHRhY2hJbmZvV2luZG93KG1hcmtlciwgbWVzc2FnZSkgewogICAgICAgIHZhciBpbmZvd2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coewogICAgICAgICAgY29udGVudDogbWVzc2FnZQogICAgICAgIH0pOwoKICAgICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICBpbmZvd2luZG93Lm9wZW4obWFya2VyLmdldCgnbWFwJyksIG1hcmtlcik7CiAgICAgICAgfSk7CiAgICAgIH07CiAgICA8L3NjcmlwdD4KCiAgICAKICAgIDxzY3JpcHQgYXN5bmMgZGVmZXIKICAgICBzcmM9Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5Qi1Yc19PMmFpNnpzQVVyaDl0a2tIUFNiQ1NtNzdwd2s0JmNhbGxiYWNrPWluaXRNYXAiPgogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f28a89b0>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "m = Map(api_key=API_KEY, zoom=1, style='silver')\n",
    "for shape in SHAPES:\n",
    "    size = random.randint(1, 3)\n",
    "    color=random.choice([c for c in COLORS])\n",
    "    icon = Icon(shape, color=color, size=size)\n",
    "    coordinates = random_latlng()\n",
    "    Marker(coordinates, icon=icon, title=shape + ' - ' + color).add_to(m)\n",
    "m"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"marker5\"></a>\n",
    "## Custom icon from URL"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "* Markers's icons also can be customized from any image URL"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "hideCode": false,
    "hidePrompt": false,
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiA2LAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAtMTguOTksIGxuZzogLTQ0LjA0fSwKICAgICAgICAgICAgICAgIG1hcFR5cGVJZDogJ3JvYWRtYXAnLAogICAgICAgICAgICAgICAgc3RyZWV0Vmlld0NvbnRyb2w6IDAsCiAgICAgICAgICAgICAgICB6b29tQ29udHJvbDogMSwKICAgICAgICAgICAgICAgIGRpc2FibGVEZWZhdWx0VUk6IDEsCiAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgc3R5bGVzOiBbeyJmZWF0dXJlVHlwZSI6ImFkbWluaXN0cmF0aXZlIiwiZWxlbWVudFR5cGUiOiJsYWJlbHMudGV4dC5maWxsIiwic3R5bGVycyI6W3siY29sb3IiOiIjNDQ0NDQ0In1dfSx7ImZlYXR1cmVUeXBlIjoibGFuZHNjYXBlIiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJjb2xvciI6IiNmMmYyZjIifV19LHsiZmVhdHVyZVR5cGUiOiJwb2kiLCJlbGVtZW50VHlwZSI6ImFsbCIsInN0eWxlcnMiOlt7InZpc2liaWxpdHkiOiJvZmYifV19LHsiZmVhdHVyZVR5cGUiOiJyb2FkIiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJzYXR1cmF0aW9uIjotMTAwfSx7ImxpZ2h0bmVzcyI6NDV9XX0seyJmZWF0dXJlVHlwZSI6InJvYWQuaGlnaHdheSIsImVsZW1lbnRUeXBlIjoiYWxsIiwic3R5bGVycyI6W3sidmlzaWJpbGl0eSI6InNpbXBsaWZpZWQifV19LHsiZmVhdHVyZVR5cGUiOiJyb2FkLmFydGVyaWFsIiwiZWxlbWVudFR5cGUiOiJsYWJlbHMuaWNvbiIsInN0eWxlcnMiOlt7InZpc2liaWxpdHkiOiJvZmYifV19LHsiZmVhdHVyZVR5cGUiOiJ0cmFuc2l0IiwiZWxlbWVudFR5cGUiOiJhbGwiLCJzdHlsZXJzIjpbeyJ2aXNpYmlsaXR5Ijoib2ZmIn1dfSx7ImZlYXR1cmVUeXBlIjoid2F0ZXIiLCJlbGVtZW50VHlwZSI6ImFsbCIsInN0eWxlcnMiOlt7ImNvbG9yIjoiIzQ2YmNlYyJ9LHsidmlzaWJpbGl0eSI6Im9uIn1dfV0KLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgIC8vIG1hcCBtYXJrZXJzCiAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgdmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjQxLjkwMjgsbG5nOjEyLjQ5NjR9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJSb21lIixsYWJlbDoiMSIsYW5pbWF0aW9uOmdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo0OC44NTY2LGxuZzoyLjM1MjJ9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJQYXJpcyIsbGFiZWw6IjIiLGFuaW1hdGlvbjpnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDAuNDE2OCxsbmc6LTMuNzAzOH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6Ik1hZHJpZCIsbGFiZWw6IjMiLGFuaW1hdGlvbjpnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NTIuNTIsbG5nOjEzLjQwNX0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkJlcmxpbiIsbGFiZWw6IjQiLGFuaW1hdGlvbjpnb29nbGUubWFwcy5BbmltYXRpb24uRFJPUCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NTIuMzcwMixsbmc6NC44OTUyfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiQW1zdGVyZGFuIixsYWJlbDoiNSIsYW5pbWF0aW9uOmdvb2dsZS5tYXBzLkFuaW1hdGlvbi5EUk9QLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTsKICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgIHZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1MS41MDk4NjUsbG5nOi0wLjExODA5Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkxvbmRvbiIsbGFiZWw6IiIsYW5pbWF0aW9uOmdvb2dsZS5tYXBzLkFuaW1hdGlvbi5CT1VOQ0UsaWNvbjoiaHR0cHM6Ly93d3cud29ya2F3YXkuaW5mby9nZngvZmxhZ3MvZmxhZ19ncmVhdF9icml0YWluLnBuZyIsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgLy8gZml0Qm91bmRzIG1ldGhvZAogICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgdmFyIGJvdW5kcz1uZXcgZ29vZ2xlLm1hcHMuTGF0TG5nQm91bmRzKHtsYXQ6NDAuNDE2OCxsbmc6LTMuNzAzOH0se2xhdDo1Mi41Mixsbmc6MTMuNDA1fSk7bWFwLmZpdEJvdW5kcyhib3VuZHMpOwogICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgIC8vIE1hcmtlckNsdXN0ZXIKICAgICAgICAgICAgICAgCgogICAgICAgICAgICAKICAgICAgICB9OwoKICAgICAgLy8gQXR0YWNoZXMgYW4gaW5mbyB3aW5kb3cgdG8gYSBtYXJrZXIgd2l0aCB0aGUgcHJvdmlkZWQgbWVzc2FnZQogICAgICBmdW5jdGlvbiBhdHRhY2hJbmZvV2luZG93KG1hcmtlciwgbWVzc2FnZSkgewogICAgICAgIHZhciBpbmZvd2luZG93ID0gbmV3IGdvb2dsZS5tYXBzLkluZm9XaW5kb3coewogICAgICAgICAgY29udGVudDogbWVzc2FnZQogICAgICAgIH0pOwoKICAgICAgICBtYXJrZXIuYWRkTGlzdGVuZXIoJ2NsaWNrJywgZnVuY3Rpb24oKSB7CiAgICAgICAgICBpbmZvd2luZG93Lm9wZW4obWFya2VyLmdldCgnbWFwJyksIG1hcmtlcik7CiAgICAgICAgfSk7CiAgICAgIH07CiAgICA8L3NjcmlwdD4KCiAgICAKICAgIDxzY3JpcHQgYXN5bmMgZGVmZXIKICAgICBzcmM9Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5Qi1Yc19PMmFpNnpzQVVyaDl0a2tIUFNiQ1NtNzdwd2s0JmNhbGxiYWNrPWluaXRNYXAiPgogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f287b0b8>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "gb_icon = 'https://www.workaway.info/gfx/flags/flag_great_britain.png'\n",
    "         \n",
    "for marker in map.children['marker']:\n",
    "    if marker.title == 'London':\n",
    "        marker.icon = gb_icon\n",
    "        marker.set_animation('BOUNCE')\n",
    "        marker.label = ''\n",
    "    else:\n",
    "        marker.set_animation('DROP')\n",
    "    \n",
    "\n",
    "map.set_style('water')\n",
    "map"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<a id=\"marker6\"></a>\n",
    "# MarkerCluster"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [],
   "source": [
    "cities['buenos_aires'] = (-34.6037, -58.3816)\n",
    "cities['brasilia'] = (-15.7942, -47.8822)\n",
    "cities['santiago'] = (-33.4489, -70.6693)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<iframe src=\"data:text/html;charset=utf-8;base64,PCFET0NUWVBFIGh0bWw+CjxodG1sPgogIDxoZWFkPgogICAgPHRpdGxlPlB5TWFwczwvdGl0bGU+CiAgICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0iaW5pdGlhbC1zY2FsZT0xLjAiPgogICAgPG1ldGEgY2hhcnNldD0idXRmLTgiPgogICAgPHN0eWxlPgogICAgICAgICNtYXAgewogICAgICAgICAgICBoZWlnaHQ6IDUwMHB4OwogICAgICAgIH0KICAgICAgICBodG1sLCBib2R5IHsKICAgICAgICAgICAgaGVpZ2h0OiAxMDAlOwogICAgICAgICAgICBtYXJnaW46IDA7CiAgICAgICAgICAgIHBhZGRpbmc6IDA7CiAgICAgICAgfQogICAgPC9zdHlsZT4KICA8L2hlYWQ+CiAgPGJvZHk+CiAgICAKICAgIDxkaXYgaWQ9Im1hcCI+CiAgICAgIDwhLS0gTWFwIHdpbGwgYmUgcGxhY2VkIGhlcmUgLS0+CiAgICA8L2Rpdj4KICAgIDxzY3JpcHQ+CiAgICAgICAgZnVuY3Rpb24gaW5pdE1hcCgpIHsKICAgICAgICAgICAgdmFyIG1hcCA9IG5ldyBnb29nbGUubWFwcy5NYXAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21hcCcpLCB7CiAgICAgICAgICAgICAgICB6b29tOiAyLAogICAgICAgICAgICAgICAgY2VudGVyOiB7bGF0OiAyMi42MzY2MDcsIGxuZzogLTE2LjQwMDY4OH0sCiAgICAgICAgICAgICAgICBtYXBUeXBlSWQ6ICdyb2FkbWFwJywKICAgICAgICAgICAgICAgIHN0cmVldFZpZXdDb250cm9sOiAwLAogICAgICAgICAgICAgICAgem9vbUNvbnRyb2w6IDEsCiAgICAgICAgICAgICAgICBkaXNhYmxlRGVmYXVsdFVJOiAxLAogICAgICAgICAgICAgICAgCiAgICAgICAgICAgIH0pOwoKICAgICAgICAgICAgCiAgICAgICAgICAgICAgIC8vIG1hcCBtYXJrZXJzCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgICAgLy8gZml0Qm91bmRzIG1ldGhvZAogICAgICAgICAgICAgICAKCiAgICAgICAgICAgICAgIC8vIE1hcmtlckNsdXN0ZXIKICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgICAgICB2YXIgbWFya2Vycz1bXTt2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDEuOTAyOCxsbmc6MTIuNDk2NH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IlJvbWUiLGxhYmVsOiIxIixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7bWFya2VyLnNldE1hcChudWxsKTttYXJrZXJzLnB1c2gobWFya2VyKTt2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDguODU2Nixsbmc6Mi4zNTIyfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiUGFyaXMiLGxhYmVsOiIyIixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7bWFya2VyLnNldE1hcChudWxsKTttYXJrZXJzLnB1c2gobWFya2VyKTt2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6NDAuNDE2OCxsbmc6LTMuNzAzOH0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6Ik1hZHJpZCIsbGFiZWw6IjMiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTttYXJrZXIuc2V0TWFwKG51bGwpO21hcmtlcnMucHVzaChtYXJrZXIpO3ZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1Mi41Mixsbmc6MTMuNDA1fSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiQmVybGluIixsYWJlbDoiNCIsYW5pbWF0aW9uOm51bGwsaWNvbjpudWxsLG9wYWNpdHk6MSxvcHRpbWl6ZWQ6dHJ1ZX0pO21hcmtlci5zZXRNYXAobnVsbCk7bWFya2Vycy5wdXNoKG1hcmtlcik7dmFyIG1hcmtlcj1uZXcgZ29vZ2xlLm1hcHMuTWFya2VyKHtwb3NpdGlvbjp7bGF0OjUyLjM3MDIsbG5nOjQuODk1Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkFtc3RlcmRhbiIsbGFiZWw6IjUiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTttYXJrZXIuc2V0TWFwKG51bGwpO21hcmtlcnMucHVzaChtYXJrZXIpO3ZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDo1MS41MDk4NjUsbG5nOi0wLjExODA5Mn0sZHJhZ2dhYmxlOmZhbHNlLG1hcDptYXAsdGl0bGU6IkxvbmRvbiIsbGFiZWw6IjYiLGFuaW1hdGlvbjpudWxsLGljb246bnVsbCxvcGFjaXR5OjEsb3B0aW1pemVkOnRydWV9KTttYXJrZXIuc2V0TWFwKG51bGwpO21hcmtlcnMucHVzaChtYXJrZXIpO3ZhciBtYXJrZXI9bmV3IGdvb2dsZS5tYXBzLk1hcmtlcih7cG9zaXRpb246e2xhdDotMzQuNjAzNyxsbmc6LTU4LjM4MTZ9LGRyYWdnYWJsZTpmYWxzZSxtYXA6bWFwLHRpdGxlOiJCdWVub3NfQWlyZXMiLGxhYmVsOiI3IixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7bWFya2VyLnNldE1hcChudWxsKTttYXJrZXJzLnB1c2gobWFya2VyKTt2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTE1Ljc5NDIsbG5nOi00Ny44ODIyfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiQnJhc2lsaWEiLGxhYmVsOiI4IixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7bWFya2VyLnNldE1hcChudWxsKTttYXJrZXJzLnB1c2gobWFya2VyKTt2YXIgbWFya2VyPW5ldyBnb29nbGUubWFwcy5NYXJrZXIoe3Bvc2l0aW9uOntsYXQ6LTMzLjQ0ODksbG5nOi03MC42NjkzfSxkcmFnZ2FibGU6ZmFsc2UsbWFwOm1hcCx0aXRsZToiU2FudGlhZ28iLGxhYmVsOiI5IixhbmltYXRpb246bnVsbCxpY29uOm51bGwsb3BhY2l0eToxLG9wdGltaXplZDp0cnVlfSk7bWFya2VyLnNldE1hcChudWxsKTttYXJrZXJzLnB1c2gobWFya2VyKTt2YXIgbWFya2VyQ2x1c3Rlcj1uZXcgTWFya2VyQ2x1c3RlcmVyKG1hcCxtYXJrZXJzLHtpbWFnZVBhdGg6Imh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9nb29nbGVtYXBzL2pzLW1hcmtlci1jbHVzdGVyZXIvZ2gtcGFnZXMvaW1hZ2VzL20iLHpvb21PbkNsaWNrOnRydWUsbWluaW11bUNsdXN0ZXJTaXplOjIsZ3JpZFNpemU6NjAsbWF4Wm9vbTpudWxsLGF2ZXJhZ2VDZW50ZXI6ZmFsc2UsfSk7CiAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgICAgIAoKICAgICAgICAgICAgCiAgICAgICAgfTsKCiAgICAgIC8vIEF0dGFjaGVzIGFuIGluZm8gd2luZG93IHRvIGEgbWFya2VyIHdpdGggdGhlIHByb3ZpZGVkIG1lc3NhZ2UKICAgICAgZnVuY3Rpb24gYXR0YWNoSW5mb1dpbmRvdyhtYXJrZXIsIG1lc3NhZ2UpIHsKICAgICAgICB2YXIgaW5mb3dpbmRvdyA9IG5ldyBnb29nbGUubWFwcy5JbmZvV2luZG93KHsKICAgICAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UKICAgICAgICB9KTsKCiAgICAgICAgbWFya2VyLmFkZExpc3RlbmVyKCdjbGljaycsIGZ1bmN0aW9uKCkgewogICAgICAgICAgaW5mb3dpbmRvdy5vcGVuKG1hcmtlci5nZXQoJ21hcCcpLCBtYXJrZXIpOwogICAgICAgIH0pOwogICAgICB9OwogICAgPC9zY3JpcHQ+CgogICAgCiAgICAgIDwvc2NyaXB0PgogICAgICAgIDxzY3JpcHQgc3JjPSJodHRwczovL2RldmVsb3BlcnMuZ29vZ2xlLmNvbS9tYXBzL2RvY3VtZW50YXRpb24vamF2YXNjcmlwdC9leGFtcGxlcy9tYXJrZXJjbHVzdGVyZXIvbWFya2VyY2x1c3RlcmVyLmpzIj4KICAgICAgPC9zY3JpcHQ+CiAgICAKICAgIDxzY3JpcHQgYXN5bmMgZGVmZXIKICAgICBzcmM9Imh0dHBzOi8vbWFwcy5nb29nbGVhcGlzLmNvbS9tYXBzL2FwaS9qcz9rZXk9QUl6YVN5Qi1Yc19PMmFpNnpzQVVyaDl0a2tIUFNiQ1NtNzdwd2s0JmNhbGxiYWNrPWluaXRNYXAiPgogICAgPC9zY3JpcHQ+CiAgPC9ib2R5Pgo8L2h0bWw+\" style=\"height:500px;width:100%;border:none !important\"></iframe>"
      ],
      "text/plain": [
       "<pymaps.pymaps.Map at 0x1d1f28ac320>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "map = Map(api_key=API_KEY, show_pegman=False, disable_default_ui=True)\n",
    "cluster = MarkerCluster()\n",
    "for n, values  in enumerate(cities.items(), 1):    \n",
    "    city_name, latlgn = values\n",
    "    title = city_name.title() \n",
    "    Marker(latlgn, title=title, label=n).add_to(cluster)\n",
    "cluster.add_to(map)\n",
    "map"
   ]
  }
 ],
 "metadata": {
  "hide_code_all_hidden": false,
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.2"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}