2012-02-14 3 views
1

私は健全なプロジェクトサイトを改善しようとしていますが、私はパニングに悩まされています。Google APIとmap.panTo:パンニングしない

テキストと録音されたサウンドに関連付けられたマーカーでデータが埋め込まれたGoogleマップがあります。できます。ユーザーがパンを使って地図をナビゲートできるようにしようとしていますが、地図のパンができません。

私はphpやGoogle APIの専門家ではありません。これは私の最初の投稿です。うまくフォーマットされていることを願っています。

プロジェクトのWebアドレスは、私は()関数map_panningを作成して、コンテンツのdivに

<a href="" onclick="map_panning()">please PAN</a> 

でこの関数を呼び出すために試してみた

soundplaces.netです。

マップはちょうど私が関数に "return false"を置こうとしたとしても再ロードします。

マーカーが

GEvent.addListener(marker, 'click', function() { 
     marker.openInfoWindowHtml(html); map.panTo(marker.getPoint()); 
     }); 

をクリックするしかし、まだ、動作しないとき、私はまた、マップのパンを作ってみました。

誰かが私を助けることができますか?

これは私がdefault.ctpに持つコードの大部分(このサイトはケーキで作られています)が役に立ちます。

function load() { 
    if (GBrowserIsCompatible()) { 
    var map = new GMap2(document.getElementById("map")); 
    map.addControl(new GSmallMapControl()); 
map.addControl(new GMapTypeControl()); 
map.setCenter(new GLatLng(<?php echo $CenterMap; ?>), 13); 
map.setMapType(G_SATELLITE_MAP); 
GDownloadUrl("http://www.soundplaces.net/xml.php", function(data) { 
    var xml = GXml.parse(data); 
    var markers = xml.documentElement.getElementsByTagName("marker"); 
    for (var i = 0; i < markers.length; i++) { 
    var name = markers[i].getAttribute("name"); 
var description = markers[i].getAttribute("description"); 
    var address = markers[i].getAttribute("address"); 
    var type = markers[i].getAttribute("type"); 
    var point = new GLatLng(parseFloat(markers[i].getAttribute("lat")), 
          parseFloat(markers[i].getAttribute("lng"))); 
var file_name = markers[i].getAttribute("file_name"); 
    var marker = createMarker(point, name, description, address, type, file_name); 
    map.addOverlay(marker); 


     } 
    }); 
    } 
} 

function createMarker(point, name, description, address, type, file_name) { 
    //var marker = new GMarker(point, customIcons[type]); 
    markerOptions = { icon:soundIcon }; 
    var marker = new GMarker(point, markerOptions); 
    var html = "<b>" + name + "</b> <br/>" + address + "<br />" + description + "<br />" + "<object type='application/x-shockwave-flash' data='/media/dewplayer.swf?mp3=/media/audio/"+file_name+"' width='200' height='20'><param name='movie' value='dewplayer.swf?mp3=media/audio/"+file_name+"' /></object>"; 
    GEvent.addListener(marker, 'click', function() { 
    marker.openInfoWindowHtml(html); map.panTo(marker.getPoint()); 
    }); 
    return marker; 
} 


function map_panning() { 
    map.panTo(new google.maps.LatLng(44.433373,10.712251)); 
    return false; //cancel navigation 
} 

次に体

<body onload="load()" onunload="GUnload()"> 



     <div id="content"> 
     <a href="" onclick="map_panning()">Please PAN</a> 
      <?php echo $this->Session->flash(); ?> 

      <?php echo $content_for_layout; ?> 

     </div> 
<?php echo $this->element('sql_dump'); ?> 
</body> 

答えて

1

にGoogleマップAPI 2およびAPI 3コードの組み合わせを混合しています。 2人は一緒に働かないので、どちらか一方を使う必要があります。 API 2は推奨されていません。したがって、API 3を使用することをおすすめします。

new google.maps.LatLng(44.433373,10.712251)はAPI 3ですが、new GMarker(point, markerOptions)は2

APIであり、あなたがAPI 2でそれをすべてを維持したいなかった場合、あなたはおそらくのようなものであるためにあなたのmap_panning機能を改正する必要があります

map.panTo(new GLatLng(44.433373,10.712251)); 
+0

どうもありがとうございましたダンカン!私はあなたにそれを知らせるようにしよう! – linecurva

+0

実際には、まだ動作しません。地図が無反応であるようです。このサイトはAPI 2で書かれているので、2つの構文を維持しようとしました。私はどこが間違っているのか探し続けるつもりです。 – linecurva

関連する問題