0

次の情報を含むマップスクリプトを使用してアイテムを表示する方法を見つけようとしています:

US 1 に沿って北に 10 マイル走ると、US 1 の右 (東) 10 フィートにマーカーがプロットされます。たとえば、マイル 0 が US 1 とメイン ストリートの交差点から始まるように設定します。

おそらく、誰かが以前にこれまたは同様のことに遭遇したことがあり、私にいくつかの指針を与えるのに十分親切です.

ありがとう!

4

2 に答える 2

2

エリックのアドバイスに従って、Googleマップから道路の中心線のポリラインを取得する関数を作成することができました。次に、google apiサービスを使用して、そのポリラインを緯度と経度の座標に変換します。それ以来、それはすべて球面幾何学コーディングでした。以下は私の謙虚な小さなコードです:

//Function to grab a centerline from the Map Api
//start = lat and long for beginning of roadway centerline ie [27.64681, -82.38438]
//end = lat and long for end of roadway centerline ie [27.71248, -82.33518]
//startmile = beginning milepost
function grabmap(start, end, startmile){

  startmile = parseFloat(startmile);

  var points = [];
  var plinex = [];
  var pliney = [];


  var directions = Maps.newDirectionFinder().setOrigin(start).setDestination(end).getDirections();
// Much of this code is based on the template referenced in
// http://googleappsdeveloper.blogspot.com/2010/06/automatically-generate-maps-and.html
  for (var i in directions.routes) {
    for (var j in directions.routes[i].legs) {
      for (var k in directions.routes[i].legs[j].steps) {
// Parse out the current step in the directions
        var step = directions.routes[i].legs[j].steps[k];
// Call Maps.decodePolyline() to decode the polyline for
// this step into an array of latitudes and longitudes
        var path = Maps.decodePolyline(step.polyline.points);
        points = points.concat(path);
      }
    }
  }

  var lengthvector = (points.length / 2);
  for ( i = 0; i <= points.length; i++){
    if ( i % 2 == 0){
      plinex = plinex.concat(points[i]);
      pliney = pliney.concat(points[(i+1)]);
    }
  }
  var plineVector = new Array(plinex.length - 2);
    for ( i = 0; i <= plinex.length - 2; i++){
          plineVector[i] = new Array(2);
          plineVector[i][0] = plinex[i];
          plineVector[i][1] = pliney[i];
        }

return plineVector;
}
于 2012-09-20T14:08:36.873 に答える
0

私はマップサービスをあまり使用していませんが、可能であるはずです。DiretionFinderを使用して、パスに沿ったポイントの緯度と経度を取得してから、いくつかの計算を行ってマーカーのオフセットを取得します。

于 2012-08-10T18:31:31.417 に答える