Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Delphi Новый топик    Ответить
 Twebbrowser обновление некоторых данных в загруженной страничке.  [new]
roma1975
Member

Откуда:
Сообщений: 124
Добрый день!

Загрузил в webbrowser файл в котором карта yandex и метка, определяемая gps координатами планшета, скажем х,у.
Как можно сделать, чтобы в webbrowser через минуту поменялись координаты х, у метки, но карта сама не перерисовывалась,
а только менялась положение метки?
.....
s1:=
'<!DOCTYPE html> '+
'<html>   '+
'<head>   '+
'	<title>Карта экипажей</title> '+
'    <meta http-equiv="x-ua-compatible" content="ie=edge"> '+
'	<script src="https://api-maps.yandex.ru/2.1/?lang=ru_RU" type="text/javascript"></script> '+
'<body>  '+
'<div id="map" style="position:absolute;width: 100%; height: 100%;background:black;"></div>'+
'<script>                                                    '+
'ymaps.ready(init);                                            '+
'var myMap, myCollectionE, myCollectionP, myCollectionO;       '+
'function init(){                                                '+
'	myMap = new ymaps.Map("map", {                                 '+
'		center: [43.2199387972459, 76.8524551391602],                '+
'		zoom: 12                                                     '+
'	});                                                            '+
'	myCollectionE = new ymaps.GeoObjectCollection();               '+
'	myCollectionO = new ymaps.GeoObjectCollection();               '+
'	myMap.geoObjects.add(myCollectionE);                           '+
'	myMap.geoObjects.add(myCollectionO);                           '+
' var myPlacemark = new ymaps.Placemark(['+StringReplace(floattostr(x),',','.',[rfReplaceAll, rfIgnoreCase])+', '+StringReplace(floattostr(y),',','.',[rfReplaceAll, rfIgnoreCase])+'], { '+
'				balloonContent: '''+lblCar.Text+''',  '+
'				hintContent: '''+lblCar.Text+ ''''+
'			},   '+
'			{     '+
'				preset:"islands#DotIconWithCaption", '+
'				iconColor:''red''   '+
'			} '+
'			); '+
'		myPlacemark.name = '''+lblCar.Text+'''; '+
'		myPlacemark.description ='''+lblCar.Text+'''; '+
'		myCollectionE.add(myPlacemark);        '+
'}                                                               '+
'</script>                                                       '+
'</html>'

;
Memo5.Lines.Clear;
Memo5.Lines.Add(s1);
Memo5.Lines.SaveToFile('//sdcard//Download//f5.html');
WebBrowser2.Navigate('file:'+'//sdcard//Download//f5.html');
4 окт 17, 12:53    [20841791]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser обновление некоторых данных в загруженной страничке.  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
roma1975,

По идее - добавить к документу скрипт, который переинициирует myPlaceMark с новыми координатами и заменяет в myCollectionE старый элемент на новый. А потом вызвать этот скрипт с новыми координатами. Как добавлять скрипты и вызывать их знаешь?
4 окт 17, 14:13    [20842212]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser обновление некоторых данных в загруженной страничке.  [new]
roma1975
Member

Откуда:
Сообщений: 124
Как скрипты вызывать знаю мало. А можно на данном конкретном примере - это показать?
4 окт 17, 14:58    [20842401]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser обновление некоторых данных в загруженной страничке.  [new]
DarkMaster
Member

Откуда: Donetsk,Ukraine
Сообщений: 5630
roma1975,

Конкретно с yandex картами я не работал, но вот простой пример, как внедрить в документ скрипт и его вызвать.
procedure TForm1.Button1Click(Sender: TObject);
var
  Doc2     : IHtmlDocument2;
  Script   : IHtmlDOMNode;
  HTMLWindow: IHTMLWindow2;
begin
 Doc2 := Webbrowser1.Document as IHtmlDocument2;
 if Assigned(Doc2.body) then
  begin
   Script := Doc2.createElement('script') as IHTMLDOMNode;
   (Script as IHTMLScriptElement).text := 'function helloWorld() { alert("hello world!") }';
   (Doc2.body as IHtmlDomNode).appendChild(Script);   // добавили свой скрипт в загруженный документ
   HTMLWindow := Doc2.parentWindow;
   if Assigned(HTMLWindow) then
    HTMLWindow.execScript('helloWorld()', 'JavaScript');  // вызвали добавленный скрипт
  end;
end;
4 окт 17, 17:15    [20843008]     Ответить | Цитировать Сообщить модератору
 Re: Twebbrowser обновление некоторых данных в загруженной страничке.  [new]
roma1975
Member

Откуда:
Сообщений: 124
Спасибо. Попробуем скриптом сделать.
6 окт 17, 11:20    [20847485]     Ответить | Цитировать Сообщить модератору
Все форумы / Delphi Ответить