通過網格拆分高德地圖


  因為爬蟲需要,如大眾點評通過距離獲取商鋪,以及高德poi獲取有數量限制。就想到通過網格的方式,把高德地圖拆分成一個一個的格子,獲取對應的經緯度,然后通過對應的經緯度去爬取收據。

思路:  

  首先獲取城市的邊界范圍,根據邊界畫出一個矩形。然后通過 new AMap.LngLat獲取相應的點。但是考慮到繪制的會遠大於該城市實際范圍,在城市內部再繪制一個矩形。外圍矩形每五公里拆分一次,內部矩形每公里拆分一次。

主要代碼如下

var x1 = new AMap.LngLat(left_lng, left_lat)
var x2 = new AMap.LngLat(right_lng, left_lat)
var y = new AMap.LngLat(left_lng, right_lat)
var center_x1 = new AMap.LngLat(center_left_lng, center_left_lat)
var center_x2 = new AMap.LngLat(center_right_lng, center_left_lat)
var center_y = new AMap.LngLat(center_left_lng, center_right_lat)
var x_distance = x1.distance(x2);
var y_distance = x1.distance(y);
var center_x_distance = center_x1.distance(center_x2);
var center_y_distance = center_x1.distance(center_y);
console.log(x_distance, y_distance)
console.log(center_x_distance, center_y_distance)
drawGrad(x_distance, y_distance);

function drawGrad(x, y) {//x,y代表的是距離
var x_total = Math.floor(x / km);//首尾,故點多1
var y_total = Math.floor(y / km);
console.log(x_total, y_total)
for (var i = 0; i < x_total + 1; i++) {
  for (var j = 0; j < y_total + 1; j++) {
    let point = southWest.offset(km * i, -km * j)
    //在內部矩形,則跳過
    if ((center_left_lng <= point.lng && point.lng <= center_right_lng) && (center_right_lat <= point.lat && point.lat <= center_left_lat)) {
      continue
    }
    pointsObj[i + "_" + j] = point.lng + ',' + point.lat
    if (i > 0 && j > 0) {
      let last_point = pointsObj[(i - 1) + '_' + (j - 1)];
      if(!last_point){
        continue
      }
      arrList.push(last_point+ '|' + pointsObj[i + '_' + j])
    }
    var bounds2 = new AMap.Bounds(southWest, point)
    var rectangle2 = new AMap.Rectangle({
      bounds: bounds2,
      strokeColor: '#000',
      strokeWeight: 1,
      strokeStyle: 'dashed',
      fillColor: 'transparent',
    })
    rectangle2.setMap(map)

    if (i == x_total && j == y_total) {
      // console.error(Date.parse(new Date()))
      console.log(arrList.length)
      console.log(JSON.stringify(arrList))
    }
  }
}
}

完整代碼已上傳GitHub,並上傳了輔助找邊界的頁面。https://github.com/c870275682/gaode_tool


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM