Позиция - https://docs.unity3d.com/ru/530/ScriptReference/In...
Карт полно, лучший SDK наверное от Mapbox. Но естественно бесплатность везде до какого-то предела. Впрочем если допилить mapbox можно использовать локальные данные. Но тут палка о двух концах, чем больше охват территории и детальней карта, тем больше весит приложение.
* Завязывайтесь не на leaflet_id, а на свой marker_id, наверняка он у вас с базе там есть.
* То что вы хотите разделять новые/старые маркеры - это называется работа со множествами, которые можно объединять, пересекать, находить разность и прочее, ищите либы.
Ссылку на Lenin нужно сохранять в глобальную переменную, если вы собираетесь с ней работать дальше. Но лучше завязываться на теги к маркеру и далее их сверять. marker.getTag() === "lenin". Но и этот подход с хардкодом плох. Обычно в таких случаях есть массив с готовыми данными, типа найти в нём объект с id маркера и взять от туда поле text и поместить в балун.
Воспользоваться proj4 (а уже вышла 5 версия). Перевести вашу широту/долготу в метровую проекцию, например UTM. Прибавить в ней нужные метры. Перевести обратно в широту/долготу.
Можно не зацикливаться на гуглояндах и рассмотреть более богатый инструментарий - https://leafletjs.com/plugins.html#edit-geometries (Leaflet.draw). Хотя вы можете их подложки подключить к лефлету, но это уже будет нарушением условий гигантов.
EditorWindow - это редактор и работает оно только в нём, после билдинга проекта доступа к сборке UnityEditor нет. И служит она для обслуживания компонентов MonoBehavour, а не наоборот. Если вы хотите как-то на него влиять, то в компоненте создаёте какие-то поля, а уже в окне редактора проверяете их и меняете свою логику.