Это методы делегата, объявленные протоколом под названием MGLMapViewDelegate
, который реализован в вашем классе
class ViewController: UIViewController, MGLMapViewDelegate { ... }
Установив delegate
некоторого объекта в качестве вашего контроллера (= self
), как вы это сделали с MGLMapView
в viewDidLoad
mapView.delegate = self
вы говорите, что при вызове какого-либо метода для делегата mapView
будет вызван метод, реализованный вами, например, mapView(_:viewFor:) -> MGLAnnotationView?
. [1113 ]
В любом случае, ваш mapView
должен быть переменной экземпляра, в противном случае вы потеряли ссылку на него
class ViewController: UIViewController, MGLMapViewDelegate {
var mapView: MGLMapView!
override func viewDidLoad() {
super.viewDidLoad()
mapView = MGLMapView(frame: view.bounds)
...
}
}
Не слишком трудно соединить основное приложение наброска, использующее просто HTML. Я позволю Вам разработать детали создания его готовое производство.
Я использую extjs здесь в качестве перекрестной платформы события браузера, но можно использовать то, что Вы довольны (jQuery). Я также использую Raphael для получения перекрестной функциональности рисования браузера.
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<title>TestPage</title>
<script language="javascript" src="raphael-src.js"></script>
<script type="text/javascript" src="extjs/adapter/ext/ext-base.js"></script>
<script type="text/javascript" src="extjs/ext-all-debug.js"></script>
<script language="javascript">
scribbler = function (container, width, height) {
this.canvas = Raphael(container, width, height);
this.currentdraw = null;
Ext.get(container).on('mousedown', function(e) {
var el = Ext.get(container);
this.currentdraw = this.canvas.path({ stroke: "black", fill: "none", "stroke-width":4 });
this.currentdraw.moveTo(e.getPageX() - el.getLeft(), e.getPageY() - el.getTop());
}, this);
Ext.get(container).on('mousemove', function(e) {
var el = Ext.get(container);
if (this.currentdraw != null)
{
this.currentdraw.lineTo(e.getPageX() - el.getLeft(), e.getPageY() - el.getTop());
}
}, this);
Ext.get(container).on('mouseup', function(e) {
this.currentdraw = null;
}, this);
}
var scribble;
Ext.onReady( function()
{
scribble = new scribbler("container", 800,600);
}
);
</script>
</head>
<body>
<div id="container" style="position:relative;border:1px solid black;width:640px;height:400px">
</div>
</body>
</html>
Необходимо будет записать и сохранить различные строки каракулей в форме для представления. И удостоверьтесь, что указатель мыши корректен все время (это - текстовая панель под IE).
Так или иначе наслаждаться.
PS. Я загрузил рабочий пример включая raphael и завершаю extjs2 библиотеки к drop.io (3 МБ, 7zip).
PPS. Я загрузил рабочий пример, который является основным (но в значительной степени полное) управление. См. inquisitiveturtle.
Как другие ответы указывают, Flash был бы самым легким методом.
Но не исключайте холст. Через некоторый изящный JavaScript и немного некоторая собственная пустая болтовня MS (VML) можно эмулировать поведение холста в IE.
Если флэш-память не является Вашей вещью (это уверенный не является моим), затем, это могло бы быть действительно аккуратной альтернативой.
До сих пор лучшее и самое легкое решение, которое я нашел, состоит в том, чтобы использовать что-то вроде этого: http://www.flashnifties.com/flash_guestbook.php
Если Вы не хотите использовать Flash, я думаю, что холст является, вероятно, Вашим лучшим выбором, как другие упомянули. Существует несколько проектов, плавающих вокруг этого, эмулируют поддержку его в IE, но самый полный (к моему знанию) является экс-холстом. Mozilla имеет учебное руководство для использования его, поскольку действительно тарифицирует Фрезу. Это (более старое) учебное руководство говорит об использовании холста с Ajax.
Однако, если Вы не хотите создавать свое собственное, и Вы просто хотите способность, Вы могли бы хотеть изучить электронные доски онлайн как Dabbleboard (который имеет API), или skrbl (который имеет встраиваемый виджет).
Я рекомендовал бы использовать <canvas>
тег; это доступно исходно в Safari, Chrome, Firefox и Opera, и доступно при помощи ExplorerCanvas в IE, который является простой оберткой, которая делает язык IE VML доступным из холста совместимый интерфейс. См. эту статью для учебного руководства о том, как сделать приложение рисунка с помощью <canvas>
элемент. Можно найти много документов и учебных руководств путем поиска Google.
Существует открытый исходный код <canvas>
приложение рисования основы, с которым можно играть и загрузить здесь.
Другой альтернативе флэш-памяти и мне просто, оказывается, нравится SVG.
Ну, tenthousandcents является приложением Adobe Flash. Лучшее место для запуска должно начать изучать Flash, если действительно требуется сделать что-то подобным. Действительно не собирается быть что-либо легкое о принятии даже простых закорючек, если Вы не знаете платформ.
Одна опция состоит в том, чтобы использовать HTML5 <canvas>
тег, поддерживаемый в Firefox, Safari и Opera, с JavaScript, затем загружая изображение в данных формы.
Это блокирует всех использующие IE, все же.
Adobe Flash является, вероятно, Вашим наилучшим вариантом.
Вы могли смотреть на то, как они делают Рисунок в Google Docs:
Google использует SVG в Firefox, Opera, Chrome и других браузерах, которые поддерживают его и VML в Internet Explorer, таким образом, Вам не нужны сторонние плагины.
Вы могли использовать апплет Java как Shi-живописец как много oekaki реализаций, делают, такие как тот по iiichan.net.
Отказ от ответственности: Я понимаю клеймо, связанное с апплетами Java в эти дни, но я думал, что буду включать это ради полноты. ;)