2009-03-12 22 views
2

Googleマップを使用しているユーザーの場所を示すプロファイルウェブサイトで作業しています。2つの場所の間のルートと距離を示すGoogleマップ

私はGoogleマップを実装しています。現在、あなたが見ている人がどこに住んでいるのかを示しています。

コード

はここにある:それはしかし、行いません何

var map = null; 
    var geocoder = null; 

    function initialize() { 
    if (GBrowserIsCompatible()) { 
     map = new GMap2(document.getElementById("map")); 
     map.addControl(new GLargeMapControl()); 
     map.addControl(new GScaleControl()); 
     map.addControl(new GMapTypeControl()); 
     geocoder = new GClientGeocoder(); 
    } 
    } 

    function showAddresses(address1,address2) { 
    if (geocoder) { 
     geocoder.getLatLng(
     address1, 
     function(point) { 
      if (!point) { 
      alert(address1 + " not found"); 
      } else { 
      map.setCenter(point, 13); 
      var marker = new GMarker(point); 
      map.addOverlay(marker); 
      marker.openInfoWindowHtml(address1); 
      } 
     } 
    ); 

     geocoder.getLatLng(
     address2, 
     function(point) { 
     if (!point) { 
      alert(address2 + " not found"); 
     } else { 
      map.setCenter(point, 13); 
      var marker = new GMarker(point); 
      map.addOverlay(marker); 
     } 
     } 
    ); 
    } 
    } 

は、2ヶ所はそう遠く離れて、彼らはtogheterマップに収まらないされたときにズームレベルを変更しています。私はそれを修正する方法を知らない。

次のステップは、そのルートをたどるときに、2つのポイントとその距離の間に視覚的なルートを表示するようにしたいということです。私はGoogleマップサイトで試してみましたが、私はそれを実装する方法に関するドキュメントを見つけることができません。

Googleマップに移動し、準備されたページを表示するハイパーリンクを作成する方が良いでしょうか?それも私はどのように知りません。

答えて

2

はそれを行っていないが、APIのGDirectionsを見ない:あなたが探しているもののような

http://code.google.com/apis/maps/documentation/reference.html#GDirections

Loooks。

+0

ありがとうございます、それはいくつかの不具合を取りましたが、私はそれを働かせました。どうやら、あなたは郵便番号に非常に限定されている必要があります。そうでないと、一部の住所では機能しません。 – Vordreller

+0

それを聞いてうれしい! – benlumley

0

APIにあります。

route site:http://code.google.com/apis/maps 

たとえば、Flashのオーバーレイで「ドライバの指示」を示す1ページです。 Flash以外のマップを作成する場合、APIは少し異なりますが、基本的なコードは同じです。 http://code.google.com/apis/maps/documentation/flash/services.html

私はMapQuestでもっと仕事をしたので、私はちょうどGoogle Maps APIに入っています。

2

ポリゴンにすべての点を追加します。ポリゴンから、ズームレベルを導出するために使用できるLatLongBoundsを取得します。

private function setMapZoomLevelBasedOnPlottedPoints(polygonPoints:Array):void 
    { 
     var pointBounds:LatLngBounds = getLatLongBounds(polygonPoints); 
     _map.setCenter(pointBounds.getCenter()); 
     _map.setZoom(_map.getBoundsZoomLevel(pointBounds) - 1); 
    } 

    private function getLatLongBounds(polygonPoints:Array):LatLngBounds 
    { 
    for(var i:Number; i < polygonPoints; i++) 
    { 
      polygonPoints.push(polygonPoints[i] as LatLong); 
    } 
     var polygon:IPolygon = new Polygon(polygonPoints); 
     return polygon.getLatLngBounds(); 
    } 
関連する問題