最近解决掉了两个BingMap的bug,都是由于两个地图产生的麻烦(一个是主地图,一个是miniMap),但是miniMap又不能少,于是经过反复的Test,终于解决掉了这两个bug。
先说Route这个问题吧,在我的示例程序中无论我怎么设置routeOptions,都能显示路线,但是在拥有miniMap的程序中怎么也显示不了route,后来通过注释代码的方式Test,最后发现,当注释掉miniMap初始化的这段代码的时候,route可以显示了,但是现在的状况是miniMap也要显示,route也要出来,那可怎么办呢?分析了bingMap的route实现方式之后发现添加route的时候必须先加载一个module:Microsoft.Maps.loadModule('Microsoft.Maps.Directions', { callback: directionsModuleLoaded }); ,但是这个module并没有制定加到哪个地图之上,这有可能的情况就是这个module加载到了最后初始化的地图之上,一看代码,果然是先初始化的主地图,然后初始化的miniMap,经过一番修改,把地图初始化的顺序颠倒了一下,果然route出来了,大喜,同时也看到了bingMap的bug所在,希望微软的地图研发团队能够及时发现这个bug(及类似的问题),并修改之。
再来谈谈刚刚解决掉的一个问题,也是和两个地图有关的,因为有个需求要将地图设置成Automatic模式显示,但是发现设置了之后,Automatic并不能正常显示,而是缩放到zoomlevel到16的时候应该切换到birdseye模式时,它并没有切换还是显示road模式,Navigator bar中也没有出现旋转方向的箭头,经过测试,bing的网站没有问题,我写的Test的示例也没有问题,那问题产生在哪里呢?经过不断的测试发现,还是和两个地图的初始化有关系,如果只初始化主地图,没问题,但只要是miniMap也跟着初始化,Automatic就失效了,找到了问题,下面就是想解决办法了,这次也想到了解决route的办法,但是结果无效。经过多次Test,发现,miniMap只要不和主地图一起进行初始化就能规避这个问题,那么我修改了miniMap的加载方式,让它在点击小箭头的时候再初始化,这样就不会和Automatic产生冲突了,问题解决了。
但是这也让我隐隐的感到担忧,两个问题虽然都通过不同的方式规避了,但是两个地图显示在页面上还可能出现什么样的问题还不知晓,随着功能的增加,模块越来越多,相互之间的影响也很多,这让排错也增加了很大的难度,一旦遇到类似的问题,还需要很大的精力去查找错误,实在是耗时耗力,不过也没有好办法,只能等待Microsoft来处理这样的问题了。