2012-01-28 17 views
0

Googleマップで遊んでいましたが、アイコンを青に変更しようとしたときにポップアップウィンドウの情報が失われました。Javascript Google Mapsアイコンを変更する

開かれた最初のウィンドウはすべて正しいですが、2番目のクリックが開きますが、唯一のことはポイント情報です。& LNGの場合は、デフォルトに戻すことができます。私はサイト上の情報を見つけ、スクリプトにコピーしようとしました。私はちょうどJavaScriptを学んでいると私はどこが間違っているか分からない。

日時のaltスピードとコースはすべてフリーズウィンドウでOKですが、ウィンドウのクリックで失敗します。ステートメントからcustomIcons [call]を削除すると、アイコンは青色になります。var marker = createMarker(point、customIcons [コール]); datetimeと置き換えると動作するようです。あなたがアドバイスをお手伝いできると思っていることがあれば、見ていただきありがとうございます。

私のスクリプト.....

function load() { 
    if (GBrowserIsCompatible()) { 

     // Get map (Version 2) 
     var map = new GMap2(document.getElementById("map")); 
     map.setUIToDefault(); 
     // Default user interface 
     var icon = new GIcon(); 
     icon.image = 'http://labs.google.com/ridefinder/images/mm_20_blue.png'; 
     icon.shadow = 'http://labs.google.com/ridefinder/images/mm_20_shadow.png'; 
     icon.iconSize = new GSize(12, 20); 
     icon.shadowSize = new GSize(22, 20); 
     icon.iconAnchor = new GPoint(6, 20); 
     icon.infoWindowAnchor = new GPoint(5, 1); 

     var customIcons = []; 
     customIcons["VE9SC-9"] = icon; 

     // Get course 
     GDownloadUrl("http://guardian.no-ip.org/track/phpsqlajax_genxml_track_25.php", 
     function(data) { 
      var xml = GXml.parse(data); 
      var markers = 
      xml.documentElement.getElementsByTagName("marker"); 
      var points = new Array(0); 
      // For polyline 
      // Loop through the markers 
      for (var i = 0; i < markers.length; i++) { 
       var datetime = markers[i].getAttribute("datetime"); 
       var speed = markers[i].getAttribute("speed"); 
       var course = markers[i].getAttribute("course"); 
       var alt = markers[i].getAttribute("alt"); 
       var call = markers[i].getAttribute("call"); 
       var point = 
       new GLatLng(parseFloat(markers[i].getAttribute("lat")), 
       parseFloat(markers[i].getAttribute("lng"))); 
       points[i] = 
       new GLatLng(parseFloat(markers[i].getAttribute("lat")), 
       parseFloat(markers[i].getAttribute("lng"))); 
       var marker = createMarker(point, customIcons[call]); 
       map.addOverlay(marker); 
      } 
      // End loop 
      // Polyline 
      var polyline = new GPolyline(points, "#0066cc", 2); 
      map.addOverlay(polyline); 
      // Set map centre (to last point), zoom level 
      map.setCenter(point, 13); 
      // InfoWindow HTML (last marker) 
      var html = ""; 
      html += "<div id=\"infobox\">"; 
      html += "VE9SC-9"; 
      html += "<br />This is my last position on"; 
      html += "<br />" + datetime; 
      html += " UTC"; 
      html += "<br />" + point; 
      html += "<br />Aluitude "; 
      html += +alt; 
      html += " Feet "; 
      html += "<br />" + speed; 
      html += " MPH Last Recorded Speed"; 
      html += "<br />" + course; 
      html += " deg Last Recorded Course"; 
      html += "<br />[email protected]"; 
      html += "<br /><a href=\"/index.html\">ve9sc.no-ip.org</a></div>"; 
      html += "<br />Updated Via MySql PHP."; 
      html += "</div>"; 
      map.openInfoWindowHtml(point, html); 
     }); 
    } 
} 

// General markers 
function createMarker(point, datetime) { 
    var marker = new GMarker(point, datetime); 

    var html = ""; 
    html += "<div id=\"infobox\">"; 
    html += "VE9SC-9"; 
    html += "<br />This is my position on"; 
    html += "<br />" + datetime; 
    html += " UTC"; 
    html += "<br />" + point; 
    html += "<br />Aluitude "; 
    html += +alt; 
    html += " Feet "; 
    html += "<br />" + speed; 
    html += " MPH Last Recorded Speed"; 
    html += "<br />" + course; 
    html += " deg Last Recorded Course"; 
    html += "<br />[email protected]"; 
    html += "<br /><a href=\"/index.html\">ve9sc.no-ip.org</a></div>"; 
    html += "<br />Updated Via MySql PHP."; 
    html += "</div>"; 

    GEvent.addListener(marker, 'click', 
    function() { 
     marker.openInfoWindowHtml(html); 
    }); 
    return marker; 
} 
+0

バージョン2が推奨されていませんGmarkerOptionsだことを確認するには、ここdatetimeオブジェクトを検査すべきだと思う... –

答えて

1

は、GoogleマップAPI(旧の一種)のV2を使用しているように見えます。このバージョンでは、あなたがGMarkerに渡すしようとする第二引数は、私はあなたが間違っていたにcustomIcons[]からGIconオブジェクトを渡そうとしていると思います。コードからGMarkerOptionsないGIcon(APIバージョン2.5+を想定)

でなければなりません。私はあなたはそれがないGIcon

var marker = new GMarker(point, datetime); 

http://code.google.com/apis/maps/documentation/javascript/v2/reference.html#GMarker

+0

が助けてくれてありがとう、私はJavaScriptを使用して非常に少ない知識を持っています。私は勉強中です。それを修正するために何をする必要がありますか? – Stephen

+0

私はそのコードをV3に置き換えて一日を過ごしました。 – Stephen

+0

@Stephenはい、V3と一緒に行くのが最善の方法です。しかし、私は上記のエラーを説明させてください。 'Gmarker'は第2引数を' GMarkerOptions'にする必要がありますが、あなたのJSオブジェクト 'customIcons'は' GIcon'オブジェクトを内部に保持し、 'createMarker(point、customIcons [call])' Gmarker'クラス( 'GmarkerOptions'が期待されましたが、' GIcon'またはnullを渡しました。 – Rezigned

関連する問題