1. 程式人生 > >高德地圖AMap.LngLat物件,與經緯度陣列可以通用[116.258446,37.686622]

高德地圖AMap.LngLat物件,與經緯度陣列可以通用[116.258446,37.686622]

節選程式碼:

                                    var lnglat = [location['lng'], location['lat']];
                                    var gps = bd09towgs84(location['lng'], location['lat']);
                                    $("#longitude").val(gps[0]);
                                    $("#latitude").val(gps[1]);
                                    //console.log(gps);
                                    // 將其他座標系的座標點轉換為高德座標系。
                                    // AMap.convertFrom(lnglat:LngLat|Array.<LngLat>, type:String,
                                    // function(status:String,result:info/ConvertorResult))
                                    // ConvertorResult 物件
                                    // info        String           成功狀態文字描述
                                    // locations   Array.<LngLat>   返回高德座標集合
                                    AMap.convertFrom(lnglat, "baidu", function(status, result){
                                        if ("complete"===status) {
                                            // result.info相當於result['info']
                                            // console.log("狀態"+status+"結果"+result+result.info+result['locations']);
                                            lnglat = result['locations'][0];// 因為result['locations']是Array.<LngLat>陣列,所以需要取第[0]個值
                                            // 刪除地圖上所有的覆蓋物
                                            map.clearMap();
                                            // console.log(lnglat);
                                            // map.setCenter([116.39,39.9]); //陣列方式和LngLat物件都行,但不是說兩者相同
                                            // map.setCenter(lnglat);
                                            var marker = new AMap.Marker({
                                                position: lnglat,//marker所在的位置
                                                map:map//建立時直接賦予map屬性
                                            });
                                            // 根據地圖上新增的覆蓋物分佈情況,自動縮放地圖到合適的視野級別,
                                            // 引數overlayList預設為當前地圖上新增的所有覆蓋物圖層
                                            map.setFitView();
                                        }
                                    });

最初我是通過陣列形式定義lnglat:

var lnglat = [location['lng'], location['lat']];

但實際上AMap.convertFrom函式的輸入引數是LngLat物件:

AMap.convertFrom(lnglat:LngLat|Array.<LngLat>, type:String,

function(status:String,result:info/ConvertorResult))

將其他地圖服務商的座標批量轉換成高德地圖經緯度座標。最多支援40對座標。

type用於說明是哪個服務商的座標,可選值有:

gps:GPS原始座標;

baidu:百度經緯度;

mapbar:圖吧經緯度;

AMap.LngLat(lng:Number,lat:Number)

構造一個地理座標物件,lng、lat分別代表經度、緯度值

包括map.setCenter函式也支援兩種輸入方式:

map.setCenter([116.39,39.9]); //陣列方式和LngLat物件都行,但不是說兩者相同
map.setCenter(lnglat);

getCenter( )

獲取地圖中心點經緯度座標值。

我不清楚之前寫的程式碼是根據哪個例子寫的,但是用陣列代表經緯度確實很方便而且可行。

就當一個特殊經驗記錄一下,來源不詳,將來在考證。