Карты Google в приложении Delphi 2009 - PullRequest
2 голосов
/ 21 июля 2010

В этом проекте моя цель - создать программное обеспечение с помощью GoogleMaps в Delphi 2009, оно будет похоже на это , но по-другому.В этом проекте пользователь может добавить точку на карте, и в каждой точке рядом со значком я добавлю некоторую информацию, и эта информация должна быть связана со значком, поэтому, если пользователь захочет щелкнуть одну из них, информация откроется автоматически,Моя проблема в том, что я могу создать информацию, но когда я закрываю ее, я не могу открыть ее снова.Как я могу справиться с этой проблемой мой код, как показано ниже, большое спасибо.

  procedure TfrmMain.btnAddMarkerClick(Sender: TObject);
var
   Doc2: IHTMLDocument2;
   Win2: IHTMLWindow2;
   latlng: String;
   information: String;
begin
   Doc2 := WebBrowser1.Document as IHTMLDocument2;
   Win2 := Doc2.parentWindow;
   information:='its a example';
    latlng := '"' + leLat.Text + '", "' + leLng.Text + '"';

  Win2.execScript('map.addOverlay(new GMarker(new GLatLng(' + latlng + ')) );', 'JavaScript');
  Win2.execScript('map.openInfoWindow(new GLatLng(' + latlng + '),document.createTextNode("'+information +'"));','JavaScript');

   end;

Дизайн, как показано ниже: альтернативный текст http://img829.imageshack.us/img829/8474/adszdi.png

Ответы [ 3 ]

3 голосов
/ 21 июля 2010

@ asilloo, API карт Google не сохраняет ваши маркеры, эта информация действительна только в текущем сеансе вашего браузера, если вам нужно сохранить (сохранить) маркеры, вы должны сделать это вручную, вы можете база данных или XML-файл. Я рекомендую вам использовать формат KML для этой задачи.

0 голосов
/ 22 июля 2010

Проблема в вашем коде в том, что вы не сохраняете никаких ссылок на информационное окно.Информационное окно отображается, и действительно, когда вы закрываете его, оно исчезает.

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

Вы должнысделать это так:

  • Создать маркерный объект
  • Присоединить обработчик события onclick.В этом обработчике событий вы открываете информационное окно
  • Добавьте маркер на карту

Код:

Win2.execScript('var marker=new GMarker(new GLatLng(' + latlng + '));', 'JavaScript');
Win2.execScript('GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml("'+information +'"); });', 'JavaScript');
Win2.execScript('map.addOverlay(marker);', 'JavaScript');

(извините, если здесь есть какие-то синтаксические ошибки.. Я отредактировал это в этом дерьмовом текстовом поле на stackoverflow)

Дайте мне знать, если это работает ...

0 голосов
/ 21 июля 2010

Я создал решение с помощью Google Maps Flex (Flash) API, встроив элемент управления Flash OCX в Delphi. Для меня это гораздо быстрее, и я могу передавать / получать сложные параметры.

может быть, вы попробуете: http://www.delphiflash.com/

...