(1)OpenPilot项目中有地图显示模块
(2)地图显示模块的插件是:opmap插件,位置是src->plugins->opmap
(3)OPMapGadget空间的settings在配置文件 OpenPilotGCS_config.xml中的:
<OPMapGadget>
<Google__PCT__20Sat>
<configInfo>
<locked>false</locked>
<version>0.0.0</version>
</configInfo>
<data>
<accessMode>ServerAndCache</accessMode> //模式:ServerAndCache是指 可以在线也可以使用离线缓存
<cacheLocation>%%STOREPATH%%mapscache/</cacheLocation>
<defaultLatitude>0</defaultLatitude> //默认的经纬度
<defaultLongitude>0</defaultLongitude>
<defaultZoom>2</defaultZoom> //默认的放大倍数
<mapProvider>GoogleSatellite</mapProvider> //默认的地图提供者
<maxUpdateRate>2000</maxUpdateRate> //最大的更新速率,即地图每秒更新多少次
<overlayOpacity>1</overlayOpacity>
<showTileGridLines>false</showTileGridLines>
<uavSymbol>mapquad.png</uavSymbol>
<useMemoryCache>true</useMemoryCache>
<useOpenGL>false</useOpenGL>
</data>
</Google__PCT__20Sat>
<Memory__PCT__20Only>
<configInfo>
<locked>false</locked>
<version>0.0.0</version>
</configInfo>
<data>
<accessMode>CacheOnly</accessMode>
<cacheLocation>%%STOREPATH%%mapscache/</cacheLocation>
<defaultLatitude>0</defaultLatitude>
<defaultLongitude>0</defaultLongitude>
<defaultZoom>2</defaultZoom>
<mapProvider>GoogleMap</mapProvider>
<maxUpdateRate>2000</maxUpdateRate>
<overlayOpacity>1</overlayOpacity>
<showTileGridLines>false</showTileGridLines>
<uavSymbol>airplanepip.png</uavSymbol>
<useMemoryCache>true</useMemoryCache>
<useOpenGL>false</useOpenGL>
</data>
</Memory__PCT__20Only>
<default>
<configInfo>
<locked>false</locked>
<version>0.0.0</version>
</configInfo>
<data>
<accessMode>ServerAndCache</accessMode>
<cacheLocation>%%STOREPATH%%mapscache/</cacheLocation>
<defaultLatitude>0</defaultLatitude>
<defaultLongitude>0</defaultLongitude>
<defaultZoom>2</defaultZoom>
<mapProvider>GoogleMap</mapProvider>
<maxUpdateRate>2000</maxUpdateRate>
<overlayOpacity>1</overlayOpacity>
<showTileGridLines>false</showTileGridLines>
<uavSymbol>mapquad.png</uavSymbol>
<useMemoryCache>true</useMemoryCache>
<useOpenGL>false</useOpenGL>
</data>
</default>
</OPMapGadget>
(4)问题:地面站运行之后在有网络的情况下,地图插件无法显示出地图
问题原因:(3)中选择的地图提供者的网址在中国无法被访问.
程序分析:在OpenPilot项目中的src->libs->opmapcontrol->src->core->源文件->OPMaps.cpp
在OPMaps.cpp文件中说明了各种mapprovider对应的网站:
switch (type) {
case MapType::GoogleMap:
case MapType::GoogleSatellite:
case MapType::GoogleLabels:
case MapType::GoogleTerrain:
case MapType::GoogleHybrid:
{
qheader.setRawHeader("Referrer", "http://maps.google.com/");
}
break;
case MapType::GoogleMapChina:
case MapType::GoogleSatelliteChina:
case MapType::GoogleLabelsChina:
case MapType::GoogleTerrainChina:
case MapType::GoogleHybridChina:
{
qheader.setRawHeader("Referrer", "http://ditu.google.cn/");
}
break;
上面数据库使用的GooglrSatellite对应的网站在中国无法使用,所以要使用谷歌地图中国的网站http://ditu.google.cn/,所以数据库中的mapprovider改成:GoogleSatellite程序中的地图就可以正常显示了.
解决方法: 将三中的
<mapProvider>GoogleSatellite</mapProvider> //默认的地图提供者
改为:
<mapProvider>GoogleSatelliteChina</mapProvider>
地图就可以正常显示了.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)