Посмотрите на библиотеки:
LeafletOpenLayers
Источник карт можно задать самому (Яндекс.Карты, Google Maps, OSM и любые другие).
На карту можно добавлять метки, полигоны, попапы и вообще всё, что душе угодно.
PS. Работал с обеими библиотеками, по своему опыту рекомендую Leaflet - меньше кода и в целом понятнее.