在Win32 C/C++;桌面应用程序
我们希望将Google地图集成到我们的C/C++win32应用程序中。 整个想法是当用户第一次运行应用程序时,我们要求他们标记自己的位置,然后检索用户所选位置的坐标并保存到数据库或文件中 初始化后,我们希望为用户提供一些预先标记的位置,并允许用户找到从他们的位置到该位置的方向。将提供预先标记位置的坐标 是否有可能通过使用谷歌Api实现我们想要的,如果是,那么如何实现?? 如果有法律问题的话在Win32 C/C++;桌面应用程序,c,google-maps,google-maps-api-3,desktop-application,C,Google Maps,Google Maps Api 3,Desktop Application,我们希望将Google地图集成到我们的C/C++win32应用程序中。 整个想法是当用户第一次运行应用程序时,我们要求他们标记自己的位置,然后检索用户所选位置的坐标并保存到数据库或文件中 初始化后,我们希望为用户提供一些预先标记的位置,并允许用户找到从他们的位置到该位置的方向。将提供预先标记位置的坐标 是否有可能通过使用谷歌Api实现我们想要的,如果是,那么如何实现?? 如果有法律问题的话 谢谢。您可以在Windows上使用Qt框架。您可以将win32应用程序与Qt集成。在Qt中,您可以使用QW
谢谢。您可以在Windows上使用Qt框架。您可以将win32应用程序与Qt集成。在Qt中,您可以使用QWebKit框架与您的应用程序和网页(在本场景中,该网页包含来自Google Maps的地图)进行通信。实际上,您可以使用Qt编写混合应用程序。查看QtQWebKit文档 关于法律问题的答案,最好的办法是看看服务条款,然后咨询律师。如果地理编码数据未与谷歌地图结合使用,则“地图API”服务条款和“地图业务”服务条款均明确禁止使用地理编码数据: Maps API TOS,相关内容见第10.1.1(g)节: 商业地图采购协议,相关条款为4.1(l): 如果您需要一个更自由的替代方案,您可能想看看——开放数据库许可证涵盖了提供的地理编码数据,该许可证允许使用属性
我需要同样的方法,并通过浏览器对象与谷歌地图接口解决了这个问题 ***请阅读并按照说明操作
CExplorer1 m_Browser;
CString HTML\u文本;
正确无误;
CWnd*pWnd=GetDlgItem(idcsgwebbrowser);
pWnd->GetWindowRect(&rect);
int w=矩形宽度()-50,h=矩形高度()-50;
HTML_TEXT.Format(L“function myMap(){var mapProp={center:new google.maps.LatLng(%f,%f),zoom:10};var map=new google.maps.map(document.getElementById(\“googleMap\”),mapProp);marker=new google.maps.marker({position:new google.maps.LatLng(%f,%f),map:map});}),w,h,纬度,经度,API(键);
文件*fp=wfopen(文件名,L“w”);
fwprintf(fp,L“%s”,HTML_TEXT.GetBuffer());
fclose(fp);
m_Browser.Navigate(文件名,0,0,0);
商业应用程序?在这种情况下,你可能需要一份商业协议。你试过Gmap.Net吗?将从谷歌api检索到的信息(纬度和经度)存储到本地数据库中是否合法。QT中是否有任何内置函数来检索用户选择的位置的纬度和经度信息,并在地图中提供预先标记的位置……我认为没有问题。谷歌地图API使用javascript。因此,首先,您应该使用JavaScript检索lng/lat,然后使用Qt WebKit将其带到您的应用程序中。Qt不是Win32 API,因此答案与question@MichaelHaephrati我没有说Qt是Win32 API,请再次阅读我的答案。我说过可以将Win32应用程序与Qt集成。阅读答案,然后投反对票。也许你刚刚有能力否决投票。在适当的地方测试一下。我想对你的答案投赞成票,但不能,因为你需要先修改它。您确实指出WinAPI应用程序可以与Qt集成,但这并不能解决问题。不是每个人都希望使用Qt,问题是使用纯Win32 API而不添加或集成到其他任何东西。
void WriteHTML(const wchar_t* html)
{
IDispatch* pHtmlDoc = m_Browser.get_Document();
if (!pHtmlDoc)
return;
CComPtr<IHTMLDocument2> doc1 = NULL;
doc1.Detach();
doc1.Attach((IHTMLDocument2*)pHtmlDoc);
if (!doc1)
return;
// Creates a new one-dimensional array
SAFEARRAY* psaStrings = SafeArrayCreateVector(VT_VARIANT, 0, 1);
if (!psaStrings)
return;
BSTR bstr = SysAllocString(html);
if (bstr)
{
VARIANT* param;
HRESULT hr = SafeArrayAccessData(psaStrings, (LPVOID*)¶m);
if (SUCCEEDED(hr))
{
param->vt = VT_BSTR;
param->bstrVal = bstr;
hr = SafeArrayUnaccessData(psaStrings);
if (SUCCEEDED(hr))
{
doc1->write(psaStrings);
doc1->close();
}
}
}
// SafeArrayDestroy calls SysFreeString for each BSTR!
if (psaStrings)
SafeArrayDestroy(psaStrings);
}
wchar_t FileName[2048];
GetCurrentDirectory(2048, FileName);
wcscat(FileName, L"\\test.html");
CString HTML_TEXT;
CRect rect;
CWnd *pWnd = GetDlgItem(IDC_SGWEBBROWSER);
pWnd->GetWindowRect(&rect);
int w = rect.Width()-50, h = rect.Height()-50;
HTML_TEXT.Format(L"<!DOCTYPE html><html><meta http-equiv=\"X - UA - Compatible\" content=\"IE = edge\"><body><div id =\"googleMap\" style=\"width:%dpx;height:%dpx\"><script>function myMap(){var mapProp = {center:new google.maps.LatLng(%f, %f), zoom : 10};var map = new google.maps.Map(document.getElementById(\"googleMap\"), mapProp);marker = new google.maps.Marker({position: new google.maps.LatLng(%f, %f),map: map});}</script><script src = \"https://maps.googleapis.com/maps/api/js?key=%s&callback=myMap\"></script></div></body></html>", w, h, Latitude, Longitude, Latitude, Longitude, API_KEY);
FILE *fp = _wfopen(FileName, L"w");
fwprintf(fp, L"%s", HTML_TEXT.GetBuffer());
fclose(fp);
m_Browser.Navigate(FileName, 0, 0, 0, 0);