Создание своей карты из изображения с метками. Создание собственной интерактивной карты города с Google Maps

Введение.

Началось все с того, что мне захотелось сделать карту своего города, наподобие такой . Причем, поскольку я не профессиональный программист, то писать свои функции по работе с картой мне пришлось бы очень долго, поэтому после долгого изучения опыта встраивания карты на других ресурсах, было решено использовать Google maps API, т.е. функции по работе с картами, написанные специалистами Гоогле и успешно используемые на других сайтах. Что мы имели на начальном этапе создания карты? Это карта города (Харовск Вологодской области, в моем случае) в масштабе 1:5000 в формате.psd (Fhotoshop), сам Фотошоп и... вроде все. Сначала я опишу основные задачи которые возникли в процессе создания карты, а потом рассмотрю более подробно по одому из вариантов их решения (использованные мною лично), хотя на самом деле их может быть сколь угодно много.

Итак, самое главное с чего нужно начать, это определиться будем ли мы привязывать нашу карту к географическим координатам на местности?

Если этого не требуется, то можно перейти к последним разделам сего повествования, не вникая в математические расчеты. В случае привязки карты к географическим координатам (в моем случае к GPS координатам, замеренными GPS навигатором), нам потребуется замерить GPS координату центра карты, и перевести их из вот такого вида:

Второе, что нам нужно определить, это масштабы: масштаб на имеющемся картографическом материале (в моем случае 1:5000) и определить масштаб км/Px (километров на один Пиксел карты) и масштабы уровней приближения на создаваемой карте.

Естественно, что масштаб имеющейся карты нужно изменить так, что бы он соответствовал масштабу карты Гоогле на определенном уровне приближения. Масштаб исходной карты изменяется путем изменения размера всей карты пропорционально по высоте и ширине.

Для этого используем Фотошоп (можно и любую другую графическую программу). Разбиваем карту на фрагменты размером 256 на 256 Пикселей (здесь есть ньюанс - справа и внизу остаются нецелые рисунки, по размеру меньше чем 256х256 Пикселей и при их отображении на сервере происходит растягивание неполного фрагмента до размера 256 х 256 Пикселей). Далее нужно переименовать полученные тайлы (фрагменты) в какой либо формат, вида tile_X_Y_Z, где Х - это номер тайла по оси Х (горизонтальная слева направо), Y- это номер тайла по оси Y (вертикальная сверху вниз), Z - это уровень приближения (масштаба) карты. Графические программы как правило делают сквозную нумерацию файлов от верхнего левого до нижнего правого угла.

После выполнения вышеуказанных процедур мы получаем основу для интерактивной карты Вашего города, вот такого вида:
http://map.harovsk.info/ - карта города Харовск, с населением 10000 человек.

Работа с картой: добавление, удаление и отображение элементов на карте, используя PHP, MySql.

Когда создана графическая часть карты, которая корректно отображается в браузере, есть перемещение по карте, функция увеличения и уменьшения масштаба, можно приступить и к размещению на ней объектов (с использованием базы данных MySql, в частном случае), их группировке и изменению. Для этого будем использовать базу данных MySql и средства PHP.

Для того, что бы оставить свой комментарий или задать вопрос, можно воспользоваться двумя вариантами:
1. Если Вы имеете аккаунт Google, то нужно зайти под своим именем и оставить комментарий;
2. Если у Вас нет аккаунта Google и Вы не хотите его создавать, тогда воспользуйтесь формой на странице:

Для блогов, решил продолжить эту тему. До 2010 года, чтобы узнать, как создать интерактивную карту для сайта, необходимо было сесть за учебники по HTML, Java и открыть документацию по Flash. Как правило, карты все равно получались неуправляемыми, плохо загружались или не отображались вовсе, и приходилось пользоваться обычной в виде изображения.

Important!

  1. Введение
  2. Сервисы

Введение

Сегодня интерактивная карта от обычной плоской в виде изображения отличается тем, что ее элементами можно управлять. Пользователь, находясь на странице, может свободно перемещаться по карте, находить объекты, схему проезда и просматривать информацию.

При необходимости элементы карты могут включать в себя помимо реальных физических объектов (дома, улицы, парки, дороги и т.д.) дополнительно текстовую информацию, видеозаписи и ссылки на другие сайты.

Основу интерактивной карты составляют оцифрованные гео-данные, находящиеся в базе сервиса в заданной системе координат. На лендингах и интернет-магазинах окно карты помогает указать место физического расположения офиса, магазина или сети торговых точек, что удобно для пользователя. По статистике замечено, что если интернет-магазин имеет место, куда клиент может приехать, позвонить или забрать оттуда товар самовывозом, то уровень доверия к ресурсу и фирме выше, что хорошо сказывается на продвижении бренда и продажах.

Сервисы

Чтобы разобраться, как создать интерактивную карту для сайта, необязательно уметь самостоятельно писать код, преобразовывать данные и скрипты. Сервисы, о которых ниже пойдет речь, предоставляют вебмастеру готовый javascript-код, универсально подходящий к любой CMS. Чтобы установить интерактивную карту к себе на интернет-портал достаточно просто выучить сочетание клавиш Ctrl+C и Ctrl+V, не обращаясь к программисту.

  1. Яндекс Карты – из всех известных сервисов предлагает самые гибкие инструменты, куда помимо геолокации, включается информация о пробках и народная карта;
  2. Google Maps – прямой конкурент Яндекса. Карты от Google обладают схожим функционалом и возможностями, но более стандартизированы;
  3. Geoserver – использует в основе Web Feature Server, но больше подходит для пользователей знающих принципы работы с серверами.

Подобные пакетные решения одинаково удобны и для пользователя, и для веб-мастера, в отличие от самописных на основе Flash и HTML-технологий. Начиная с 2013 года, 80% веб-студий, занимающихся созданием сайтов, используют Яндекс Карты, Google Maps и Geoserver в профессиональном сайтостроении. Такие карты бесплатны для использования, быстро редактируются и легко поддерживаются в актуальном состоянии. Следовательно, цена обслуживания и трудозатраты на них обходятся владельцу ресурса дешевле.

Создание интерактивной карты на примере Яндекс Карты

Готово! Инструкция, как создать интерактивную карту для сайта, выглядит длинной и сложной только на первый взгляд. В действительности создание слоя с геоданными и настройка необходимых параметров занимает не больше 1,5 минут. Предлагаю обсудить этот способ в комментариях.

Цель работы: Научиться создавать многоуровневую интерактивную карту с помощью программы PowerPoint.

Задание:

1. Овладеть основними функциями программы PowerPoint.

2. Научиться вставлять компоненты, необходимые для создания интерактивной карты в программу PowerPoint.

4. Уметь создавать «кнопки возврата».

Порядок выполнения работы:

1. Откройте программу PowerPoint в папке Microsoft Office нажав: Пуск – Программы - Microsoft Office - PowerPoint . Откроется основное окно программы. 2. Нажмите: Файл – Создать – Новая презенттация . 3. В окне Макет ы содержимого выбрать Пустой слайд. 4. Вставьте основную карту проекта в программу, для чего выполните: Вставка – Рисунок – Из файла и указав адрес карты, загрузите ее (рис.1). 5. В главном меню выполните следующий алгоритм: Показ слайдов Смена слайдов . В открывшемся окне находим режим П рямоугольник наружу . С ним эффект смены карт наиболее рационален. Затем убираем галочки с режимов По щелчку и Автоматически . Отметить Применить ко всем слайдам.

Рис.1 Главное окно программы PowerPoint.

6. Для обеспечения интерактивности карты, следует выделить объекты, которые будут увязаны гиперссылками с прикрепленными слайдами. Алгоритм выполнения следующий: Вставка – Рисунок – Автофигуры. В окне Автофигуры выбираем: Основные фигуры - Полилиния . С помощью появившегося крестообразного курсора обводим границы объекта на карте. Обязательно замкните линию, чтобы получить целый объект. 7. Чтобы убрать заливку и сделать выделенную область невидимой, поместите курсор на объекте и кликните правой кнопкой мыши. В открывшемся окне выберите Формат автофигуры. В открывшемся окне (рис.2) установите Прозрачность заливки 100%. Затем выполните: Цвет линии – Другие цвета (рис.3) – Прозрачность линии 100% - Ок.


Рис. 2. Окно программы. Рис. 3. Окно программы Цвета . Формат автофигуры

8. Нажмите: Вставка - Создать слайд . 9. В окне Макет ы содержимого выбрать Пустой слайд . 10. Вставте в открывшийся слайд рисунок (карту, фотографию, таблицу, график и др..), который будет гиперссылкой. Для этого в ыполните следующий алгоритм: Вставка – Рисунок – Из файла и укажите адрес файла. 11. Вернитесь на основную карту, для чего кликните левой клавишей мыши в окне Структура на изображении первого слайда. 12. С помощью гиперссылки следует увязать выделенные объекты основной карты, с прикрепленными слайдами. Для этого поместите курсор мыши на одном из выделенных объектов и щелкните правой клавишей. В открывшемся окне выбираем Гиперссылка . 13. В появившемся окне Добавление гиперссылки (рис.4) выберете Связать с местом в документе . Выберите место в документе Слайд 2 (или другой связанный с данным объектом). Подобным образом создаются гиперссылки и с другими объектами. В прикрепленных слайдах можно также выделять объекты и выставлять гиперссылки на другие слайды и т.д.


Рис.4. Окно программы Добавление гиперссылки.

14. Для нормального функционирования интерактивной карты на прикрепленных слайдах следует разместить кнопки возврата, обеспечивающие переход на основную карту. Алгоритм следующий: в окне Структура кликните левой клавишей мыши на изображении второго слайда, а затем последовательно нажмите Показ слайдов – Управляющие кнопки- Управляющая кнопка: назад .Курсором выделите место на слайде для кнопки возврата. Появится окно Настройка действия (рис.5). Установите в окне По щелчку мыши следующие установки: Перейти по гиперссылке Первый слайд – ОК. 15. Для проверки функционирования интерактивной карты нажмите: Показ слайдов – Начать показ. Осуществляем проверку.

Рис. 5. Окно программы Настройка действия

Для сайта вызывает больше доверия у ваших посетителей, потому что Вы позаботились заранее о том, чтобы они Вас нашли, как можно быстрее, и убедились в реальном Вашем существовании.

На блоге Вы можете размещать карты с указанием Вашего офиса, маршрута для путешественников или места достопримечательностей, которые Вы хотите посетить или посетили. Вы можете создать персонализированную карту и указать на ней, что нужно именно Вам.
Сделать это достаточно легко и быстро, так что приступим к процессу.

  1. Откройте сайт https://www.google.ru/maps
  2. Нажмите кнопку «Меню» слева вверху
  3. Выберите в меню «Мои места»
  4. На открывшейся панели во вкладке «Карты» нажмите кнопку «Создать карту»


  1. В информационном блоке кликните «Карта без названия»
  2. Во всплывшем окне напишите своё название и описание и нажмите «Сохранить»
  3. Созданная карта отобразится во вкладке «Карты» раздела «Мои места»


  1. Нажмите «Открыть в Моих картах»
  2. Далее кликните на ссылку «Базовая карта» и карты Google предложат несколько вариантов отображения, выберите одну из девяти карт (описание карты появится при наведении мышки на картинку)


Как добавить объекты на интерактивную карту Google?

  1. Слева нажмите на «Слой без названия»
  2. Во всплывшем окне введите название

В одном слое Вы можете разместить до 2000 объектов, но сами слои вы не можете смешивать, например, пункты и маршруты будут размещены на разных.


Для начала рассмотрим вариант, когда Вы хотите добавить объект, которого нет в списке Google.

  1. Для создания нового объекта в панеле под строкой поиска нажмите на иконку «Метки».
  2. Кликните мышкой в том месте, которое хотите отметить
    • Во всплывшем окне напишите название компании или офиса
    • Заполните описание, можно указать адрес Вашего сайта, а также добавить видео или картинку, для этого:
    • Нажмите на иконку «Фото»
    • Выберите из предложенных вариантов
    • Нажмите «Выбрать», затем «Сохранить»


Теперь создадим новый слой и выберем объект из списка Google



К вашему офису можно проложить маршрут

  1. Нажмите кнопку «Проложить маршрут сюда», автоматически создастся новый слой
  2. Введите название пункта А
  3. Нажмите на ссылку «На автомобиле» и выберите способ перемещения «На авто», «На велосипеде», «Пешком»


Вы можете создать несколько слоёв с разными вариантами маршрута . Когда Вы разместите карту на блоге, то Вы можете настроить отображение определённого участка

  1. Увеличьте/уменьшите карту до необходимых размеров с помощью кнопок +/- внизу слева на карте и нажмите кнопку «Настройки»
  2. Из списка выберите «Задать область просмотра по умолчанию»


В разделе «Справочный центр — Мои карты» Вы можете узнать о дополнительных настройках https://support.google.com/mymaps

Как разместить интерактивную карту на сайте WordPress?

По умолчанию, когда Вы создали карту , доступ открыт только Вам, только Вы её можете видеть. Для того, чтобы её могли видеть Ваши читатели, откройте к ней доступ


  1. Нажмите на «Настройки»
  2. Выберите «Добавить на сайт»
  3. Скопируйте код, нажмите «Ок»


Вставьте код на страницу блога в режиме Текст. Его Вы можете, как всегда, редактировать вручную.


Можно добавить интерактивную карту на страницу Контакты или в футер на Ваше усмотрение, например

На этот раз ко мне обратился один приятель и спросил, как это во Flash программисты делают всякие интерактивные штуки? Привело его к этому желание сделать у себя на странице «крутую» интерактивную карту. Чтобы при наведении надписи появлялись... И дал мне собственноручно (надеюсь) нарисованную картинку:

В итоге в выданном мне файле Map.psd имелся один слой с картой и несколько слоёв с наименованиями областей. Вот таким был слой карты:


Хозяйке на заметку : Бесспорно, что надписи в фотошопе можно красиво раскрашивать, гнуть, поворачивать, но всё же лучше их всегда делать текстовыми полями в самом Flash. Поверьте, это всегда пригодится. Надписи из Photoshop растризуются и импортируются как картинки, поэтому текст и эффекты нельзя будет потом изменить во Flash.

Переделывать всё «как положено» и разрабатывать хорошую архитектуру у меня времени и желания не было. Сделал «на коленке». Может кому-нибудь пригодится.

Открываем Adobe Flash и создаём новый проект «Flash File (ActionScript 3.0)». Щёлкаем в пустом месте и в окне Properties выставляем размер, равный размеру нашей карты, и частоту кадров около 25:

Теперь импортируем в проект наши регионы. Выбираем File > Import > Import to Library и выбираем наш файл Map.psd. Мы должны увидеть, что все слои из файла добавились в библиотеку в виде растровых графических элементов группы «Map.psd Assets».

Для дальнейшей работы из графических элементов необходимо сформировать символы. для этого щёлкаем два раза по значку клипа Map.psd, чтобы просмотреть его содержимое.

Мы видим, что все импортированные растровые элементы здесь выделены. Снимаем выделение, щёлкнув где-нибудь снаружи карты. Теперь щёлкаем отдельно каждую надпись и конвертируем в символ типа Graphic. Для каждой области указываем понятное имя.

Если же Вы делаете надписи текстовыми полями в самом Flash, то их конвертирование можно пропустить.


В последнюю очередь не забудьте выделить и сконвертировать в символ Map_Graph саму карту.

Таким образом мы получили графические символы карты и надписей. Создайте для удобства группу «Графические символы» в окне библиотеки и перетащите в неё новые символы.

Теперь нам необходимо превратить все объекты в сущности, которые будут нам доступны в процессе программировнания. Для этого необходимо каждый символ типа Graphic поместить в клип MovieClip и разрешить доступ к нему из скрипта. Щелкаем правой кнопкой, выбираем Convert to Symbol, указываем понятное имя (Belgorod, Bransk, Kaluga, ...) и разрешаем экспорт:


Эту операцию нужно проделать со всеми спрайтами надписей и карты. Создайте группу «Клипы» и поместите в неё новые символы. Теперь мы сможем из скрипта создавать карту и области с помощью кода

var map = new Map ; var sm = new Smolensk ; var tb = new Tambov ; ...

У всех клипов указывается класс по умолчанию flash.display.MovieClip. У нас все надписи будут интерактивные, то есть они будут следить за перемещением указателя мыши. Для добавления программного кода к элемену Smolensk можно было бы создать класс Smolensk в новом одноимённом файле «Smolensk.as». Но так как надписей у нас много мы сделаем общий класс и сделаем его родительским для всех надписей. Создадим файл RegLabel.as с пустым классом RegLabel

Внимательно относитесь к регистру символов в именах файлов, классов, переменных и прочих наименований в скриптах. Если назовёте файл с маленькой буквы, а в проекте напишете его с большой, то система этот файл не найдёт и выдаст ошибку.

package { import flash . display .*; public class RegLabel extends MovieClip { public function RegLabel () : void { } } }

Теперь установим этот класс родительским (вместо flash.display.MovieClip) у клипа каждой надписи:


Для клипа карты класс менять не надо.

Итого у Вас должны получиться три «папки» в библиотеке:

  1. Map.psd Assets (содержит исходные растровые надписи)
  2. Графические символы (объекты надписей и карты)
  3. Клипы (клипы надписей и карты)

Теперь необходимо зайти в каждый клип надписи и создать в нём анимацию появления и изчезания текста и расставить контрольные точки.

Заходим в клип надписи «Belgorod» для редактирования:

Для начала добавим новые кадры клавишей F5 и ещё два слоя:


Переименуем нижний слой в Text, второй в Points. Второй слой будет содержать ключевые кадры с метками. Станем на нужный кадр, нажмём F6:


Для добавления метки кадрам в свойствах фрейма укажем их имена Start , Over и Out:

Третий слой переименуем в Actions и вставим точки останова. Для этого добавим два ключевых кадра, откроем окно скриптов командой Actions контекстного меню ключевого фрейма и вставим строку

stop () ;

в оба ключевых фрейма.

Таким образом мы подготовили разметку для трёх состояний клипа:


Осталось создать анимацию текста. В начале (на участке Start) текст должен быть невидимым. Щёлкаем по первому кадру, выделяем символ с текстом, выбираем значение Alpha (Непрозрачноть) у параметра Color и вместо 100% ставим 1%. Надпись должна пропасть.


Создадим ещё несколько ключевых кадров напротив ключевых кадров других слоёв. Установим непрозрачность надписи в этих кадрах 100% и 1% как указано на рисунке. Идея в том, что на участке Over надпись должна появляться, а на участке Out исчезать.


Чтобы эффекты были плавными создадим анимацию на участках появления и исчезания.


На этом подготовка клипа надписи закончена. Вот что должно получиться:


При перемещении линии-курсора прозрачность подписи должна плавно изменяться. На участке Start надпись не видна (непрозрачность 1%), на участке Over она появляется (анимация непрозрачности от 1% до 100%) и на Out изчезает (от 100% до 1%).

Не ставьте исчезание до 0%, так как при этом клип не будет реагировать на события мыши!

Кадры с метками Start, Over и Out будут использоваться для переключения состояний из скрипта.

Теперь можно скопировать фреймы и вставить на новые слои в клипах всех остальных надписей:


Анимацию нижнего слоя скопировать не получится (придётся в каждом клипе вручную повторять расстановку прозрачности и создание анимации).

Итак, клипы мы создали, осталось дописать скрипты.

Общий для всех надписей файл RegLabel.as. При создании экземпляра надписи станем у клипа этой надписи на кадр Start и остановимся. При наведении и убирании указателя мыши будем переходить на соответствующие кадры (Over и Out).

Добавим параметр, в котором будем хранить ссылку и обеспечим переход по этой ссылке по щелчку мыши.

package { import flash . display .*; import flash . events .*; import flash . net .*; public class RegLabel extends MovieClip { public var link = " " ; // место для ссылки // Конструктор (срабатывает при создании надписи) public function RegLabel () : void { // Перейдём у себя (в клипе) на кадр "Start" и остановимся gotoAndStop (" Start " ) ; // Повесим на себя события наведения и убирания мыши addEventListener (MouseEvent . MOUSE_OVER , _showMe ) ; addEventListener (MouseEvent . MOUSE_OUT , _hideMe ) ; // Ловим щелчки для работы перехода по ссылке addEventListener (MouseEvent . CLICK , _clickMe ) ; } private function _showMe (e : MouseEvent ) : void { // Запустим воспроизведение себя с кадра "Over" gotoAndPlay (" Over " ) ; } private function _hideMe (e : MouseEvent ) : void { // Аналогично с кадра "Out" gotoAndPlay (" Out " ) ; } private function _clickMe (e : MouseEvent ) : void { // Если нам указали ссылку, то переходим по щелчку if (link ) { var targetURL = new URLRequest (link ) ; navigateToURL (targetURL , " _self " ) ; } } } }

Мы создали полноценные клипы вплывающих надписей и клип карты. Пора вывести это всё на экран. Вынесем программную часть проекта в отдельный файл. Создадим файл RegionMap.as с данным содержимым:

package { import flash . display .*; public class RegionMap extends Sprite { // Будем хранить все надписи в массиве для удобства public var labels = new Array ; // Функция-конструктор (выполняется при запуске флэшки) public function RegionMap () : void { // Как видно, в fla файле на единственном кадре ничего нет. // Вставим на экран карту и надписи. // Создаём экземпляр клипа карты var map = new Map ; map . x = map . y = 0 ; // Помещаем на экран addChild (map ) ; // Создаём все надписи и помещаем их в массив labels // Каждая надпись наследует функционал класса RegLabel var r ; r = new Belgorod ; r . link = " http://yandex.ru/yandsearch?text=belgorod " ; r . x = 8 ; r . y = 550 ; labels . push (r ) ; r = new Bransk ; r . x = 46 ; r . y = 380 ; labels . push (r ) ; r = new Kaluga ; r . x = 156 ; r . y = 392 ; labels . push (r ) ; r = new Kostroma ; r . x = 512 ; r . y = 438 ; labels . push (r ) ; r = new Kursk ; r . x = 50 ; r . y = 505 ; labels . push (r ) ; r = new Leningrad ; r . x = 348 ; r . y = 87 ; labels . push (r ) ; r = new Lipetsk ; r . x = 148 ; r . y = 556 ; labels . push (r ) ; r = new Moskow ; r . x = 266 ; r . y = 396 ; labels . push (r ) ; r = new Novgorod ; r . x = 300 ; r . y = 160 ; labels . push (r ) ; r = new Orel ; r . x = 108 ; r . y = 470 ; labels . push (r ) ; r = new Razan ; r . x = 256 ; r . y = 528 ; labels . push (r ) ; r = new Smolensk ; r . x = 150 ; r . y = 292 ; labels . push (r ) ; r = new Tambov ; r . x = 221 ; r . y = 612 ; labels . push (r ) ; r = new Voronezh ; r . x = 98 ; r . y = 632 ; labels . push (r ) ; // Теперь с массивом записей можно делать что угодно. // Мы же просто выведем их на экран: for (var i = 0 ; i < labels . length ; i ++ ) { addChild (labels [ i ] ) ; } // Больше ничего делать не надо, так как всё поведение // надписей прописано в RegLabel.as } } }

Для каждой надписи при необходимости укажите ссылку на нужный раздел сайта (как это показано для Belgorod)

Укажем этот класс исполняемым при запуске проекта:


Теперь можно запустить проект. Результат можно увидеть .

При желании можно дополнить клипы надписей, добавив в них регионы, окрашенные немного другим цветом, и любые другие элементы и задав любые эффекты появления/исчезания. Это сделает карту более живой.

Это не совсем полноценная карта. При быстрых перемещениях указателя мыши можно заметить яркое «моргание». Это связано с тем, что указатель уходит с надписи раньше, чем она полностью появляется. При этом с середины появления воспроизведение перескакивает на кадр Stop, где надпись в начале видна полностью. Да и примитивные прямоугольные клипы с надписями не повторяют точно форму областей и не реагируют на наведение указателя на области в промежутках. Это издержки такого подхода.

Итог: друг оказался доволен приобщению к Flash и даже смог кое-что переделать в этом прототипе.

Дабы сразу предупредить «звёздную болезнь начинающего мастера» скажу, что этот примитивный способ далёк от идеалов более-менее обдуманного профессионального проектирования и совершенства кода и годится лишь в качестве урока. В общем, «Все имена и события вымышлены. Любое совпадение с реальными является случайностью. Не пытайтесь повторить это в реальной жизни».

Здесь мы обошлись всего заданием одного класса объекта и классом документа. Интереснее было бы создавать всё программными средствами (используя текстовые поля и порождая от одного класса) по массиву координат, применять прогаммно различные стили и трансформацию. Не помешало бы провести неслабый рефакторинг: вынести данные из логики (во внутренний массив или во внешний файл) с доступом к ресурсам через классы-модели, вынести низкоуровневые операции создания карты, создания и вывода областей в отдельные методы createMap(), createLabels() и showLabels() ; инкапсулировать поле link, снабдив его сеттером с валидацией аргумента...

Если же хотите сразу что-то действительно стоящее (как на kremlin.ru , например) для серьёзного проекта и не поняли предыдущий параграф, то лучше самому сразу не пробовать.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: