Можно ли создать пользовательскую форму (с помощью мыши) на карте Google с использованием библиотеки Gmap
на С#, а затем сохранить ее в базе данных и в запросе клиента снова Gmap
сохраненную форму на карте Google? Есть ли возможность для такой операции в любой другой библиотеке или в Gmap
(я не ожидаю кода. Просто обзор этого).
Создайте пользовательскую форму в Карте Google и храните ее в базе данных Oracle с помощью С#
Ответ 1
Я думаю, вы хотите сделать наложение карты, и вы можете использовать инструменты рисования Goggle вместе с вашей картой. См. Https://developers.google.com/maps/documentation/javascript/examples/drawing-tools.
Это создаст оверлей. Предположим, вы могли бы написать код javascript, который сохранил бы координаты и атрибуты наложения в скрытое поле, как только вы нажмете кнопку "Сохранить". Затем после отправки формы вы можете сохранить эту информацию в базе данных с использованием стандартных методов, а затем при рендеринге карты в следующий раз вставьте информацию о перекрытии в вывод javascript на своей странице,
Я не собираюсь тратить время на то, чтобы сделать это для вас, но это тот подход, который я бы взял.
Ответ 2
steps:
1) Get the geometry/shape out from google api.
2) Send/post to server using some popular exchange format, GeoJSON or WKT
3) Prepare a server service/asp/web service to accept the request and translate/validate those geometries into Oracle SDO_Geometry user define type/struct.
4) Use some C# oracle library,
a) create Connection,
b) create command with parameter,
c) Initial an OracleObject, assign all the required properties like SDO_GTYPE, SDO_SRID.
d) Assign the OracleObject to the the named parameter in the command.
e) Execute the command and commit.
Hope this help.
Ответ 3
О, мальчик... это абсолютно выполнимо! И я делаю это изо дня в день! Позвольте мне рассказать, как я это достигаю. Другое дело иметь в виду, что это работает для Карт Google и Bing Maps.
Во-первых, вы должны представлять Карты не только как координаты, но и как набор небольших квадратов. Что я имею в виду? Посмотрите на следующую картинку. Это изображение Чешской Республики на картах Google. Теперь Чешская Республика, ака Чехия, на картах Google можно увидеть как коллекцию меньших квадратных изображений или сеток. Вам нужно понять эту концепцию очень хорошо, чтобы эта идея работала. Теперь взглянем на следующее изображение, где показано, как изображение Чехии на Картах Google можно визуализировать как коллекцию небольших квадратных ящиков или сетки. Эти небольшие квадратные коробки хранят изображения частей Чехии. Если вы хотите увеличить координату Xm, Ym (Easting: Xm, Northing: Ym), это место в Чехии, а название этого места - "Hermanuv Mestec" (как показано на рисунке выше)), тогда вам нужно выбрать ограничивающий прямоугольник с координатами (X1, Y1), (X1, Y2), (X2, Y1) & (X2, Y2) и получить исходные изображения в этом поле. Эта функция для получения базовых изображений в этой ограничивающей рамке - это фактически масштабирование. Поэтому, когда вы увеличиваете или, другими словами, извлекаете базовые изображения в этой ограничивающей рамке, вы получаете что-то как следующее изображение: Теперь, надеюсь, вы получили базовую концепцию того, как Zoom In или Zoom Out (обратный процесс) и картографическая координатная система работает, если вы хотите достичь того, чего хотите достичь, потому что эта концепция очень важна для понимания, прежде чем вы начнете. Вам нужно написать программу, которая может сделать это преобразование. И по вашему вопросу, как это сделать следующим образом:
Step 1: Use a Panel (Control) on Windows Form or WPF or asp.net application, which you are building.
Step 2: Use GMap Library in C# to fetch the image within a bounding box as mentioned above and populate/draw that image on the Panel.
Step 3: Have a function that tracks mouse events on the panel. This function/method will track the X,Y position of mouse move event on the panel and use Panel Drawing tools to draw objects on the panel based on this.
Step 4: Write another program to transform these mouse X,Y positions on the panel to co-ordidnates on the map. This piece/part of the program is important because this is what enables you to translate your representation of small square image breakdowns of maps into panel drawable objects, so that you can draw them again and again in future if saved properly in the database.
Step 5: When you draw an abject on the panel you track the X,Y mouse bounds on the panel and transform those points into co-rodinates using your custom program and then you save the co-ordinates in the database table.
Это оно! И в случае, если вам нужно нарисовать тот же объект, сохраненный в базе данных, сначала вам нужно снова извлечь/нарисовать изображение карты Google на панели, затем нужно извлечь эту форму объекта из базы данных, извлекая координаты этот объект, сохраненный в таблице базы данных, используйте вашу программу перевода, чтобы преобразовать эти координаты в панели с возможностью рисования точек и вернуть объект обратно на ту же панель.
Теперь вы можете написать эту программу перевода (координаты Easting Northing в координаты Drawing Panel), что может занять несколько месяцев или, по крайней мере, некоторое время. Или вы можете приобрести индивидуальную программу, предназначенную для достижения этой же функции за хорошую цену. Надеюсь это поможет.
Вы также можете достичь этого с помощью графического объекта Google Maps с помощью JavaScript, как указано в другом ответе, но проблема связана с переводом и сохранением координат в базе данных. Это намного быстрее и отзывчиво в этом вышеупомянутом методе. Во всяком случае, вот как я это делаю, так личное мнение.
Технологии, требуемые для вышеупомянутого метода, следующие:
- Библиотека карт Google/Библиотека Bing Map (в зависимости от того, что вы выберете)
- С# с.Net Framework 3.5 или выше (инфраструктура.net, меньшая, чем это, также хороша, но может потребовать больше строк кода для достижения некоторой функциональности, если вы хотите достичь сложности в этом)
- SQL Server Management Studio или что-либо эквивалентное в зависимости от типа базы данных и запроса, который вы планируете использовать.