Использование google карт
От: Kitty  
Дата: 31.07.08 09:59
Оценка:
По этой ссылке: http://www.stevetrefethen.com/blog/UsingGoogleMapsFromAWindowsClientApplication.aspx
есть фрагмент кода на Паскале, позволяющий поставить метку на карте google в WebBrowser1:
Я его переделала. Однако маркер не ставиться. Что не правильно?
#include "Mshtml.h"
#include "mshtmcid.h"
#include <atl\atlvcl.h>
#include "SHDocVw_OCX.h"

void __fastcall TFormClient::FormCreate(TObject *Sender)
{
 WebBrowser1->Navigate("http://Lenailicheva.narod.ru//js2.html");
}
//---------------------------------------------------------------------------
void __fastcall TFormClient::Button1Click(TObject *Sender)
{
 CComPtr<IHTMLDocument2>spDoc2;
 CComPtr<IHTMLWindow2>spWnd;
 WebBrowser1->Document->QueryInterface(IID_IHTMLDocument2, (LPVOID*) &spDoc2);
 spDoc2->get_parentWindow(&spWnd);
 VARIANT Out;
 spWnd->execScript("createMapMarker(\"31.05173494\", \"-122.03160858\", \"test\")", "JavaScript" ,&Out); //ничего не происходит
}


Содержимое js2.html взято из стандартного примера на том же сайте.


<html>
  <head>
      <style type="text/css">
      * { margin: 0px; }
      </style>
    <script src="http://maps.google.com/maps?file=api&v=2.x&key=1234" type="text/javascript"></script>
    <script type="text/javascript">
    //<![CDATA[
    var map;

    function addControl(ctrlType) {
      switch(ctrlType)
      {
      case 1:
        map.addControl(new GSmallMapControl())
        break
      case 2:
        map.addControl(new GMapTypeControl());
        break
      }
    }

    function createMapMarker(lat, lng, html) {
      var point = new GLatLng(parseFloat(lat),parseFloat(lng));
      var marker = new GMarker(point);
      GEvent.addListener(marker, "click", function() {
      external.Caption = 'Hello from Javascript';
      });
      map.addOverlay(marker);
      return marker;
    }

    function load_map(id, lat, lng, zoom) {
      if (GBrowserIsCompatible()) {
        map = new GMap2(document.getElementById(id));
        var point = new GLatLng(parseFloat(lat),parseFloat(lng));
        map.setCenter(point, zoom);
       }
       else {
         alert("Sorry, the Google Maps API is not compatible with this browser");
       }
    }
    //]]>
    </script>
  </head>
  <body onunload="GUnload()">
    <div id="skypark" style="width: 500px; height: 500px;"></div>
    <script type="text/javascript">
    setTimeout("load_IEmap('skypark',37.0517349243164,-122.031608581543,11)", 500);
    </script>
  </body>
  <!--[if gte IE 6]>
  <script type="text/javascript">
  //<![CDATA[
  function load_IEmap(id, lat, lng, zoom) {
  load_map(id, lat, lng, zoom);
  }
  //]]>
  </script>
  <![endif]-->
</html>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.