GoogleMap離線API繪製折線問題

        由於google map是無偏的,GPS模塊讀出的座標可以直接對應到地圖上,反過來也是。爲了應用的方便,所以抓取了無偏的地圖瓦片(天地圖的無偏街道圖及谷歌無偏衛星影像圖,天地圖的街道圖雖然帶水印,但是地面標註豐富,所以仍然抓的天地圖的,而谷歌的衛星影像圖最清晰,分辨率最高。),然後調用谷歌的離線地圖API進行顯示。但是地圖控件可以正常顯示,也可以實現指定點標註功能,但是始終無法繪製折線。參考谷歌開發文檔,無論是繪製折線,多邊形,還是加載kml圖層,均無法實現。

        例如官方文檔#url##裏給出的顯示kml圖層方法:

var ctaLayer = newgoogle.maps.KmlLayer({              
        url:'./ctac.kml',//‘file://nas/Csub/MapTile/tianditu_jpg/Google_JS/’'http://googlemaps.github.io/js-v2-samples/ggeoxml/cta.kml',
        map:map                                   
    });

或者:

var ctaLayer = newgoogle.maps.KmlLayer();
   ctaLayer.setUrl('=1&localhost/mapsite/Google_JS/ctac.kml');
    ctaLayer.setMap(map);
map.layers[19] =ctaLayer;

以及:

varsrc = 'ctac.kml';
        var kmlLayer = newgoogle.maps.KmlLayer(src, {
        suppressInfoWindows: true,
        preserveViewport: false,
       map: map
    });

無論是在線kml文件還是離線kml文件都無法加載。

而官方給出的繪製折線方法如下:

flightPlanCoordinates= [
        (39.87507033,117.1745868,10),
        (39.8460955,117.164584,10),
        (39.89504067,117.1446192,12),
        (39.8349455,117.1846222,10)
    ];
    var flightPath = new google.maps.Polyline({
        geodesic: true,
        strokeColor: '#FF0000',
        strokeOpacity: 1.0,
        strokeWeight: 2,
        path: flightPlanCoordinates,
    });
    flightPath.setMap(map);

而這麼做始終報錯,在newgoogle.maps.Polyline處。

糾結多日,期間從js源碼(壓縮後的額。。。。。。)看起,一度以爲找到了方向,結果還是失敗了,不過說實在,還是能確定是傳入參數格式有錯,就是不知道該怎麼傳。準備放棄谷歌地圖API,看了看百度、騰訊、圖吧、高德等等的API換用別家的,在看騰訊地圖API的時候發現騰訊地圖API和谷歌地圖API驚人的相似,除了命名空間從google.maps變成了qq.maps,所以我決定大膽的嘗試,仿照騰訊地圖API調用方法去調用谷歌地圖API。。。。。。結果還真成功了,繪製折線方法如下:

var flightPlanCoordinates = new Array();
var i=0;
flightPlanCoordinates.push(new google.maps.LatLng(113.2354,47.2365));
flightPlanCoordinates.push(newgoogle.maps.LatLng(112.6945,46.2658));
flightPlanCoordinates.push(newgoogle.maps.LatLng(115.2356,45.2368));
var flightPath = new google.maps.Polyline({
         path:flightPlanCoordinates,
         geodesic: true,
         strokeColor:'#FF0000',
         strokeOpacity: 1.0,
         strokeWeight: 2
});
可能是由於離線地圖API是畢竟老的GoogleMap在線版地圖API修改的,而後續谷歌地圖API升級了構造折線不再需要一個座標對象數組而只需要座標數組(有待驗證)。

原文鏈接:http://www.straka.cn/blog/googlemap_offlineapi_bugfix/

發佈了34 篇原創文章 · 獲贊 25 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章