Получение всей адресной информации по маршруту Google Maps - PullRequest
2 голосов
/ 01 марта 2012

Я занимаюсь разработкой приложения для Windows Forms с использованием VB.NET, которое предлагает пользователю искать адреса в Картах Google через веб-браузер.Я также могу успешно показать направления между двумя точками для пользователя, а также позволить пользователю перетаскивать маршрут по своему усмотрению.Теперь у меня вопрос - могу ли я получить информацию о широте / долготе маршрута, то есть массив Overview_polyline кодированных точек широты / долготы, и сохранить его, например, в текстовом файле на моем компьютере?Или можно получить список всех адресов, расположенных по обе стороны маршрута по всей длине маршрута, а затем сохранить данные в файл на моем компьютере?Я использую файлы HTML для доступа и отображения данных Карт Google в элементе веб-браузера.

Спасибо

1 Ответ

0 голосов
/ 14 марта 2012

Это на самом деле довольно просто, если вы просто ищете координаты экрана.

// this probably should be in your form initialization 
this.MouseClick += new MouseEventHandler(MouseClickEvent); 


    void MouseClickEvent(object sender, MouseEventArgs e) 
    { 
        // do whatever you need with e.Location 
    } 

если вы строго ищете точку в браузере, вам нужно рассмотреть функции

browser.PointToClient(); 
browser.PointToScreen(); 

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

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

Вы можете использовать свойство ObjectForScripting для встраивания кода, чтобы сделать это в веб-браузере. Ужасно, если не сказать больше. MSDN имеет некоторую документацию по процессу здесь: http://msdn.microsoft.com/en-us/library/system.windows.forms.webbrowser.objectforscripting.aspx

Поскольку это действительно некрасиво, возможно, лучшим решением будет использование AxWebBrowser - это тоже некрасиво, но не так страшно.

Кроме того, я обнаружил, что кто-то хочет сделать это в документе PDF, и кто-то из MSFT говорит, что это невозможно, но на самом деле он пытается сказать, что он не встроен, даже если PDF-документ все еще можно предсказать с высокой точностью, где он был нажат, если вы используете первый метод, который я описал. В любом случае, вот этот пост: http://social.msdn.microsoft.com/Forums/en/csharpgeneral/thread/2c41b74a-d140-4533-9009-9fcb382dcb60

Однако это возможно, и есть несколько способов сделать это, так что не пугайтесь той последней ссылки, которую я дал вам.

Кроме того, этот пост может помочь, если вы хотите сделать это в JavaScript: http://www.devx.com/tips/Tip/29285

По сути, вы можете добавить атрибут к изображению с помощью методов, доступных в элементе управления веб-браузера, вы можете добавить что-то вроде onclick = "GetCoords ();" поэтому при щелчке функция JavaScript получает координаты, а затем вы можете использовать javascript для помещения значений в скрытое поле ввода (input type = "hidden"), которое вы можете добавить через элемент управления webbrowser или, если есть один уже на странице, вы можете использовать это. Итак, как только вы поместите координаты, используя javacript, в это поле ввода, вы можете легко получить значение в нем, используя элемент управления webbrowser, например:

webbrowser1.document.getElementById("myHiddenInputField").value

Это получит значение в этом поле, которое вы установили с помощью JavaScript. Кроме того, упомянутая мной функция «GetCoords ()» называется SetValues ​​() в ссылке на метод javascript, которую я предоставил выше (на сайте devx.com), но я назвал ее GetCoords, потому что она имеет больше смысла и не хотела сбивать вас с толку с фактическим именем, которое они использовали, вы можете изменить его на любое имя, которое вы хотите. Вот javascript, который они использовали, он только получает координаты в переменную, не помещает ее в скрытое поле ввода, нам нужно сделать это дополнительно (в конце функции javascript SetValues ​​/ GetCoords).

function SetValues()
{
var s = 'X=' + window.event.clientX + ' Y=' + window.event.clientY ;
document.getElementById('divCoord').innerText = s;
}

Эти ребята просто сохраняют его в элементе div, который виден пользователям, но вы можете сделать div невидимым, если хотите использовать поле div, в этом нет никакого преимущества или недостатка, вам просто нужно чтобы установить для свойства visible значение false с помощью javascript или css, но все же проще использовать скрытое поле ввода, поэтому вам не нужно возиться с этим.

Дайте мне знать, как вы ладите.

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