Будет больше эссе о карте Gaode.
1. Описание бизнеса
В соответствующем бизнесе приложения есть два типа участников: один из них - обслуживающий персонал, а другой - персонал службы. В основном он реализует функции и своевременно определяет местоположение обслуживающего персонала в приложении. Затем дистанционная единица M между обслуживающим персоналом и обслуживающим персоналом рассчитывается с помощью широты и долготы, предоставленных, когда обслуживающий персонал входит в приложение.
The following is the entire detailed process, from creating a Gaode corresponding application (I won’t talk about it if you register here)-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
2. Создайте приложение Gaode Map, соответствующее сервю и создайте свою собственную таблицу базы данных Cloud Map
После регистрации учетной записи войдите в систему и нажмите на консоль в правом верхнем углу. Появится следующий интерфейс. Я сделал скриншот.
Конечно, это интерфейс, который я зарегистрировал. Если вы не зарегистрируете, просто получите ключ. Нажмите здесь непосредственно, чтобы создать свое приложение. Вы можете получить имя приложения по желанию, потому что мы здесь сервлеты, чтобы справиться с ним.
Связанный бизнес, поэтому вариант - API веб -службы. Здесь вы нажимаете, чтобы получить ключ, и появится скриншот ниже.
После того, как этот шаг будет завершен, мы можем создать облачную диаграмму, которую мы хотим, ввести консоль, выбрать мышь, чтобы перейти к моим данным, а затем выбрать станцию управления данными (WEB) ниже, чтобы ввести интерфейс, чтобы добавить облачные диаграммы.
Ниже приведен снимок экрана после входа. После этого скриншота я объясню это непосредственно в тексте.
Снимок экрана выше - результат, который я создал. Здесь нам нужно сначала нажать на загрузку шаблона данных в верхнем правом углу. После загрузки шаблона измените соответствующие данные, добавьте необходимые вам поля, а затем нажмите на новую карту, чтобы
Модифицированный шаблон импортируется в облачную библиотеку. Этот шаблон на самом деле представляет собой таблицу базы данных, экспортируемая Excel. Ниже я напрямую перехватываю таблицу, которую я создал. Я добавил два поля в эту таблицу и установил одно поле в поле индекса.
Помните, что имя красного поля должно быть сохранено (содержание может быть изменено по желанию), которое включено в шаблон системы. Два черных поля в конце добавляются сами по себе и могут быть изменены по желанию. Даже если вы загрузите его на сервер карты Gaode Cloud, его можно изменить.
После загрузки приведенной выше таблицы вы откроете предыдущее управление данными (WEB), и появится интерфейс предыдущей карты. Блок карты появляется слева. Нажмите, и вы увидите подробную информацию о человеке, который вы загрузили, а также желтый пятиконечный логотип Star, отображаемый на карте, через загруженную широту и долготу. Есть скриншоты ниже
Поля, отображаемые в этой таблице, изменяются мной, а не загружены в Excel только что. Нажатие на заголовок в столбце может сделать серию настроек. Я не буду вдаваться в подробности.
Просто поговорите о настройках поля индекса.
После входа я решил отфильтровать индекс сортировки-> Фильтр Индекс сортировки-установить условие фильтра для вновь добавленных полей пользователя.
Я использую тип пользователя, взятый в облачном изображении выше. Я также сделаю это для вас.
На этом этапе мы выполним все шаги создания и загрузки облачной карты. Полем Полем Далее я расскажу о методе.
2. Метод запроса на сервенс -запросы библиотеки изображений Cloud Image
1. Сначала публикуйте адрес документа разработчика:
http://lbs.amap.com/yuntu/reference/cloudsearch/ Я предлагаю вам проверить это сам
Здесь сервлет использует API поиска облаков, а соответствующее приложение использует API облачного хранилища. Может быть, завтра будет добавлена статья о размещении времени клиента iOS, соответствующего этому интерфейсу.
Ниже приведен формат сплайсированного URL. Введите обновить непосредственно в URL, чтобы получить соответствующие данные с помощью GET.
http://yuntuapi.amap.com/datasearch/local?tableid=568bd32b305a2a31f604c650&city=beijing&keywords=%20&filter=type: лимит обслуживания персонала = 15 & page = 1 & key =? (Ключ для параметров здесь все ваши собственные)
Ниже приведен инкапсулированный код метода запроса
посылка помощника; Импорт java.io.bufferedReader; импорт java.io.ioexception; импорт java.io.inputStreamReader; импорт java.io.printwriter; импорт java.io.unsupportedEncodingexception; импорт java.net.url; импорт java.net.url; import java.net.UrlConection; java.util.map; открытый класс httprequest { /** * Отправить запрос метода получения на указанный URL * * @param URL * URL для отправки запроса * @param param * Параметры запроса, параметры запроса должны быть в форме name1 = value1 & name2 = value2. * @return URL -ответ результат удаленного ресурса, представленного удаленным ресурсом*/ public Static String Sendget (String URL, String Param) {String result = ""; BufferedReader in = null; Попробуйте {string urlnamestring = url + "?" + param; Url Realurl = новый URL (urlnameString); // открыть соединение между URL -URLConnection Connection = Realurl.Openconnection (); // Установить атрибут общего запроса connection.setRequestProperty ("Accept", "*/*"); Connection.SetRequestProperty («Connection», «Keep-Alive»); Connection.SetRequestProperty («Пользовательский агент», «Mozilla/4.0 (совместимый; MSIE 6.0; Windows NT 5.1; SV1)»); // Создать фактическое соединение соединения. Connect (); // Получить все поля заголовка ответа <String, list <string >> map = connection.getheaderfields (); // Переносить все поля заголовка ответа для (String Key: map.keyset ()) {System.out.println (key + "--->" + map.get (key)); } // Определите входной поток BufferedReader, чтобы считать ответ URL в = новый BufferedReader (New InputStreamReader (connection.getInputStream ())); Строка; while ((line = in.readline ())! = null) {result += line; }} catch (Exception e) {System.out.println ("Исключение произошло при отправке запроса GET!" + E); e.printstacktrace (); } // Используйте наконец -то блок, чтобы закрыть поток ввода, наконец, {try {if (in! = Null) {in.close (); }} catch (Exception e2) {e2.printstackTrace (); }} return result; } /** * Отправить запрос на указанный URL * @param url * URL для отправки запроса * @param param * parameter запроса, параметр запроса должен быть в форме name1 = value1 & name2 = value2. * @return ответа результаты удаленного ресурса, представленного */ public Static String SendPost (string url, string param) {printWriter out = null; BufferedReader in = null; String result = ""; try {url Realurl = новый URL (URL); // открыть соединение между urlConnection conn = Realurl.openconcenection (); // Установить атрибут общего запроса conn.setrequestproperty ("Accept", "*/*"); conn.setrequestproperty («connection», «Keep-alive»); conn.setrequestproperty («Пользовательский агент», «Mozilla/4.0 (совместимый; msie 6.0; Windows NT 5.1; Sv1)»); // Чтобы отправить запрос сообщения, вы должны установить следующие две строки в conn.setDoOutput (true); conn.setDoinput (true); // Получить выходной поток, соответствующий объекту urlconnection = new PrintWriter (conn.getOutputStream ()); // Отправить параметр запроса out.print (param); // Buffer Out.flush () выводного потока промывки; // Определите входной поток BufferedReader для чтения ответа URL в = new BufferedReader (New InputStreamReader (conn.getInputStream ())); Строка; while ((line = in.readline ())! = null) {result += line; }} catch (Exception e) {System.out.println ("Исключение произошло при отправке запроса поста!" +e); e.printstacktrace (); } // Используйте наконец -то блоки, чтобы закрыть выходной поток и наконец входного потока {try {if (out! = Null) {out.close (); } if (in! = null) {in.close (); }} catch (ioException ex) {ex.printStackTrace (); }} try {result = new String (result.getBytes ("iso8859-1"), "UTF-8"); } catch (unsupportedencodingexception e) {// todo автоматически сгенерированный блок e.printstacktrace (); } return Result; }}Ниже приведен метод запроса
String mapparameter = new String ("tableId = 568bd32b305a2a31f604c650 & city = pecijing & keywords =%20 & filter = type: masseur limit = 15 & page = 1 & key =?"). Getbytes ("iso8859-1"), "utf-8");
String returnResult = httprequest.sendpost ("http://yuntuapi.amap.com/datasearch/local", mapparameter);
out.println ("<cript> alert ("+returnresult+"); </script>");
Условие фильтрации, которое мы запрашиваем здесь, - это поле, которое мы создали сами (и мы устанавливаем его в поле индекса) Тип: массажер ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
3. Сервлет рассчитывает расстояние между двумя широты и долготы
Это расстояние между сервлетом и обслуживающим персоналом через широту и долготу. Это на самом деле отношения с одним ко многим. Один человек, который обслуживается, может соответствовать N People, предоставляющим услуги. Широта и долгота обслуживающего персонала, расположенного в месте, будут соответствовать широте и долготе всего обслуживающего персонала, который искал на этот раз и рассчитывает расстояние.
Ниже приведен метод расчета расстояния. Это общий метод, который применяется ко всем основным картам.
public static doubledistance (latlng start, latlng end) {double lat1 = (math.pi/180)*start.latitude; double lat2 = (math.pi/180)*end.latitude; double lon1 = (math.pi/180)*start.longitude; double lon2 = (math.pi/180)*end.longity; двойной r = 6371; double d = math.acos (math.sin (lat1)*math.sin (lat2)+math.cos (lat1)*math.cos (lat2)*math.cos (lon2-lon1))*r; возврат D*1000; } Latlng в параметре вы можете создать класс самостоятельно, который содержит два поля, которые имеют двойной тип. Один представляет точность, а другой представляет широту.
Процесс, сгенерированный с помощью этого метода: когда пользователь открывает интерфейс приложения персонала службы, он просит интерфейс прочитать список обслуживающего персонала. В настоящее время Сервлет должен один раз запросить информацию о обслуживании на карте облака Gaode. Вы можете ограничить количество запросов, а затем запросить их. Широта и долгота в каждом данных зациклены, а широта и долгота передаются интерфейсом приложения, который открывается обслуживающим персоналом, и рассчитывают относительное расстояние. Завтра я могу опубликовать эссе iOS, которое соответствует этому интерфейсу, в основном размещенным в коде базы данных облачных карт времени, реализованной на iOS.
Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.