| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
1 | категория | метод объекта | суть | Кто внес вопрос /где встретилось | куски кода | Замечания от разработчиков (Рустам) обсуждения на отдельных листах этого документа | Замечания от разработчиков (Михаил) |
2 | возможный баг | IIngeoContour.AddPartsFrom | в контуре было 2 контурпарта (которые тоже добавлялись через апи), при добавлении контурпартсов из другого контура с помощью этой функции, последний контурпарт исходного дублировался вместо добаляемого обнаружена была на 4.4.0.177 - просто мы пока эту версию ставим заказчикам, как вродебы стабильную | СамараИнформспутник печать отчетов TzuContours.FillByObject | iBaseCont.AddPartsFrom(iNewCont); заменили на ContourAppendPartsFrom(iBaseCont, iNewCont); где procedure ContourAppendPartsFrom(const toContour, aSource:IIngeoContour); var tmpCont :IIngeoContour; begin tmpCont := CreateEmptyContour(inApp); tmpCont.AddPartsFrom(toContour); toContour.Clear; toContour.AddPartsFrom(tmpCont); toContour.AddPartsFrom(aSource); tmpCont := nil; end; | что-то было, вроде исправлял, но нужно проверить | |
3 | возможный баг | IIngeoContourPart.Delete | либо не работает, либо не обновляет IIngeoContour.Count | СамараИнформспутник печать отчетов TzuContours.FillByObject | эта процедура не рабочая как раз из-за такого поведения //извлечь такую-то часть контура как отдельный контур function ExtractContourPartAsContour(const aContour:IIngeoContour; cpIndex:integer):IIngeoContour; var i :integer; resContour :IIngeoContour; begin resContour := CreateEmptyContour(inApp); resContour.AddPartsFrom(aContour); for i := cpIndex-1 downto 0 do resContour.Item[i].Delete; for i := resContour.Count-1 downto 1 do resContour.Item[i].Delete; Result := resContour end; | см. пункт 1 | |
4 | хотелка | IIngeoContour.InsertPartFrom( insertToIndex :int; //-1 - toEnd aSource :IIngeoContourPart); | Возможность добавлять часть контура в произвольную позицию в списке частей контуров | СамараИнформспутник | |||
5 | хотелка | IIngeoContour.PartMoveTo( fromPartIndex:int; toPartIndex :int); | возможность менять порядок частей контура в пределах контура | СамараИнформспутник эта возможность нужна некоторым пользователям. Мы конечно написали формочку которая позволяет пользователям менять порядок частей котнура, но сами части копировались покоординатно, что для многоточечных частей не эффективно | |||
6 | хотелка | IIngeoContour.Generalize( ??? ); | Сократить число вершин, на основе какойнить погрешности или масштаба | СамараИнформспутник | Обсуждение пнкта 6 | ||
7 | хотелка | IIngeoMapObjects.Application :IIngeoApplication; | иногда приходится таскать в процедуры 2 параметра: транзакцию и ссылку на ингео, которая нужна для каких нить медаданных и прочего | СамараИнформспутник | это пока под вопросом, обсуждать нужно | ||
8 | хотелка | IIngeoMapObjects.CreateContour :IIngeoContour; | часто нужно создавать временные контура для промежуточных вычислений, а приходится добираться до IIngeoApplication у IIngeoApplication эту возможность отбирать не нужно | СамараИнформспутник | это пока под вопросом, обсуждать нужно | ||
9 | хотелка | IIngeoMapObject.Layer :IIngeoLayer; | опять же, неудобно добираться до метаданных слоя, ибо нужно знать ссылку на IIngeoDB | СамараИнформспутник | Обсуждение пнкта 9 | ||
10 | несильная хотелка | IIngeoXXX.Clone :IIngeoXXX; | Актуально для некоторых объектов в апи ИнГео. Например, IIngeoContour.Clone, IIngeoContourPart.Clone, IIngeoLayer.Clone, и т.д. | СамараИнформспутник | аналогично следующему пункту. | ||
11 | несильная хотелка | IIngeoXXX.Assign(aSource :IIngeoXXX); | Актуально для других некоторых объектов в апи ИнГео, в основном для объектов из InScripting_TLB. Например, IInBrush.Assign, IInPen.Assign и т.д. | СамараИнформспутник | Обсуждение Обновления API'!A1 | ||
12 | хотелка | IIngeoUserProfile.Get Put | Хотелось бы чтобы сохраняемые значения не ограничивалиь в количестве символов или был бы организован более удобный интерфейс для хранения модулями своих настроек в БД | СамараИнформспутник | Этот метод скорее всего не измениться, ограничение с количеством символов связано с ограничениями в таблице в которой сохраняются данные. Лучше продумать, какой-нибудь дополнительный интерфейс позволяющий сохранять настройки модулей. Варианты: 1. Сделать доступ до таблицы Addons, типа TryLoadModuleData(Key: String; out aData: String): Boolean SaveModuleData(Key: String; Data: String) RemoveModuleData(Key: String) 2. Сделать интерфейс типа GetModuleData(Key: String): IModuleSettings IModuleSettings = interface GetBoolean(Key: String): Boolean GetString(Key: String): String ... end еще дополнительно хочется (с чем самому приходилось сталкиваться, либо с чем народу приходится извращаться, хотя это не относится к основной функциональности модулей) 1. сделать доступ для модулей доступ к файловой системе на стороне сервера, например для модуля указать папку которая ему доступна, с правами (на чтение, на запись) 2. вынести наружу, для модулей механизм оповещений, для того чтобы модуля могли рассылать сообщения другим своим копиям 3. вынести наружу модулей механизм блокировок 4. универсальный механизм лицензирования (идея есть и даже реализация тоже есть (используя цифровые подписи, ассиметричные ключи)) 5. ... и вообще хотелось бы от вас услышать список предложения облегчающих разработку модулей | ||
13 | хотелка | SetTimer | возможность вызова скрипта с заданным интервалом чтоб без извратов с html окном | ? | а для чего такую фичу используете ? и вообще как часто используете чисто скриптовые модуля ? и почему ? | ||
14 | хотелка | IIngeoMapObjects.QueryByContour2 (aStyleIDs, aContour, aRelationMask, aRelation) | Иногда нужно запрашивать объекты со стилями не определяющими геометрию, иногда нужны не все стили определяющие геометрию, а только избранные. щас мы делаем так: у нужных стилей устанавливаем ДефайнГеометри, у ненужных сбрасываем, делаем запрос, восстанавливаем. А это требует прав на изменение метаданных слоя. короче, очень полезная фича | СамараИнформспутник Получение данных РосРеестра | |||
15 | хотелка | IIngeoLayer.ObjectCaptionFormat :string; IIngeoMapObject.Caption :string; | идея: для каждого слоя завести строку формата, с помощью которой для каждого объекта слоя, можно получить его строковое юзер-френдли описание. (через проводник эту строку можно будет задать) IIngeoMapObject.Caption := IIngeoMapObject.FormatText(IIngeoLayer.ObjectCaptionFormat); Это сильно упростит отображение объетов для юзера из различных модулей. Если эта идея получит развитие, то хотелось бы чтобы выросло число спец названий поддерживаемых FormatText - не только {.Square}, но и допустим {.LayerName} или {.X1} или {.FirstGeoDefStyleName} и т.п. понапридумывать можно еще кучу | СамараИнформспутник многие новые модули было бы легче писать | IIngeoMapObject.Caption := IIngeoMapObject.FormatText(IIngeoLayer.ObjectCaptionFormat); | ||
16 | хотелка | Добавление в API функций для работы с фильтром отображения | В ингео есть фильтр отображения объектов: Вид\Параметры отображения Хотелось бы получить программный доступ к данному функционалу, чтобы из модулей более наглядно показывать пользователям те или иные ситуации | СамараИнформспутник некоторым модулям реально нехватает этих фишек, приходится рисовать контура поверх уже отрисованной карты, выглядит не очень современно :) | |||
17 | баг | IInImage.Surface.Navigator.Navigate | после выполнения данного метода сбрасываются настройки Surface.Navigator.YMirror и Surface.Navigator.XAngle, то есть 2 куска кода дадут разный результат (код смотри в другом столбце) | iImg.Surface.Navigator.Navigate cx, cy, scale iImg.Surface.Navigator.YMirror = false iImg.Surface.Navigator.XAngle = 0 application.activedb.paintXML iImg.Surface, pXML iImg.SaveToFile fn ---------- iImg.Surface.Navigator.YMirror = false iImg.Surface.Navigator.XAngle = 0 iImg.Surface.Navigator.Navigate cx, cy, scale application.activedb.paintXML iImg.Surface, pXML iImg.SaveToFile fn | |||
18 | |||||||
19 | |||||||
20 | |||||||
21 | |||||||
22 | |||||||
23 | |||||||
24 | |||||||
25 | |||||||
26 | |||||||
27 | |||||||
28 | |||||||
29 | |||||||
30 | |||||||
31 | |||||||
32 | |||||||
33 | |||||||
34 | |||||||
35 | |||||||
36 | |||||||
37 | |||||||
38 | |||||||
39 | |||||||
40 | |||||||
41 | |||||||
42 | |||||||
43 | |||||||
44 | |||||||
45 |