2010-12-10 19 views
0

私は現在、Google Maps APIを使用してデータベースに登録されているすべての会社のマーカーを表示しているASP.NETプロジェクトに取り組んでいます。JavaScript Google map bug bug

すべてはうまくいきますが、マーカーをクリックすると、会社のリストの最後の会社のツールヒント/ダイアログボックスが常に表示され、実際にクリックされた会社のマークは表示されません。

私は本当になぜそれが常に表示される最後のマーカーであるかについて私の頭を浮かべることはできません。そこにあなたのいずれかが、私はあなたから聞いて幸せになる理由を見つけることができた場合は

JavaScript.Text = @"<script type='text/javascript'> 
        function load() { 
        if (GBrowserIsCompatible()) { 
        var map = new GMap2(document.getElementById('map')); 
        map.setCenter(new GLatLng(56.4, 10.57983), 9); 
        map.enableScrollWheelZoom(); 

        } 
       } 
     </script> "; 

    foreach (MemberProfile m in relatedMembers) 
    { 
     XmlDocument doc = new XmlDocument(); 

     string address = m.Address; 
     string zip = m.Zip; 
     string city = m.City; 
     string navn = m.Name; 
     string tlf = m.Phone; 

     doc.Load("http://maps.googleapis.com/maps/api/geocode/xml?address=" + zip + "+" + city + "+" + address + "+DK&sensor=true&key=ABQIAAAAEaY4JLb9fZFGMlDKuMUlWBRSvyGIkBO7X03pzlT7Z30EPXHR8BS0rXL_ShFm2gc79lZTw2Zak88wng"); 

     XmlNode latNode = doc.SelectSingleNode("GeocodeResponse/result/geometry/location/lat/text()"); 
     XmlNode lonNode = doc.SelectSingleNode("GeocodeResponse/result/geometry/location/lng/text()"); 

     if (latNode != null && lonNode != null) 
     { 
      JSAddMarkers.Text += @"<script type='text/javascript'> 
           var marker = new GMarker(new GLatLng(" + latNode.Value + "," + lonNode.Value + ")); " 
          + "var html = '<b>" + navn + "</b><br />" + address + "<br /> " + zip + " " + city + "<br />" + tlf + "'; " + "GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(html); });" 
          + "map.addOverlay(marker);" 
          + "</script>"; 
     } 

:ここに私の更新コードです!すべてのヘルプ/ヒントは

すべてのベスト:-)高く評価され、

ボー

+0

を試してみてくださいそれ。最初にマップオブジェクトを作成し、ループを実行してマーカーを追加する必要があります。 –

+0

うーん、あなたはこれにちょうどいいよね!新しいコードで最初の投稿を更新し、foreachループの上にマップの作成を移動します。 – bomortensen

+0

まだ解決策が見つかりませんでした:(私は多くのコードをリファクタリングして1つを出力しようとしましたスニペットですべて誰もが? – bomortensen

答えて

0

は、私はグリッチがマップオブジェクトを作成し、上のマーカーを追加するためにあると思います。この

var point =new GLatLng(" + latNode.Value + "," + lonNode.Value + "); 
var marker = createMarker(point, address,zip,city,navn); 
map.addOverlay(marker); 



function createMarker(point, address, zip,city, navn) { 
     var marker = new GMarker(point, customIcons[type]); 
     var html = "Address:<b style='padding-left:6px'>" + address+ "</b><br/>zip:<b style='padding-left:6px'>"+ zip+ "</b><br/>city:<b style='padding-left:6px'>"+ city+ "</b>"; 
     GEvent.addListener(marker, 'mouseover', function() { 
     marker.openInfoWindowHtml(html); 
     }); 
     GEvent.addListener(marker, "mouseout", function() { 
       marker.closeInfoWindow(); 
    }); 
     return marker; 
    } 
+0

こんにちはBhanu、それは確かにそれを行う方法です。しかし、私はjavascriptの忍者コーディングをC#コードビハインドで作業しているので、私のように思えますあなたのコードを動作させるのに少し問題があります:/コードビハインドでは、実際にはjavascriptで作業したことはありません。 – bomortensen