1

さて、私は複数のマーカーを追加する際にいくつかの問題を抱えています。私は目が交差するまで検索したことを誓いますが、これを理解することはできません.

これが私のコードです:

function initialize()
{
cnt = 0;

var icon = "bullet-red-icon.png";

var mapProp = {
    center: new google.maps.LatLng(39.8282,-98.5795),
    zoom:5,
    mapTypeId: google.maps.MapTypeId.ROADMAP
};

var map = new google.maps.Map(document.getElementById("googleMap"), mapProp);

$("marker", mapxml).each(
    function(i)
    {
        var iwcontent = $(this).find("mname").text() + "<br /><br />";
        iwcontent += $(this).find("mstreet").text() + "<br />" + $(this).find("mcity").text() + " " + $(this).find("mstate").text() + " " + $(this).find("mzip").text() + "<br /><br />";
        iwcontent += "UNITS: " + $(this).find("units").text() + "<br />";
        iwcontent += "UNIT COST: " + $(this).find("unitcost").text() + "<br />";
        iwcontent += "TOTAL FUEL COST: " + $(this).find("fuelcost").text() + "<br />";

        var mlat = parseFloat($(this).find("mlat").text());
        var mlon = parseFloat($(this).find("mlon").text());

        addMarker(iwcontent, mlat, mlon, map, i);
    }
);

$("#d_transmap").show();
$(".t_loader").hide();

}

これで、すべてのデータがそこにあることがわかりました。すべてを console.logged にしましたが、すべて問題ないようです。ただし、マーカーはまったく表示されません。

addMarker 関数は次のとおりです。

function addMarker(content, lat, lon, map, i)
{
    var point = new google.maps.LatLng(lat, lon.toFixed(6));
    var marker = new google.maps.Marker({ position: point, icon: "bullet-red-icon.png", map: map });
    var infowindow = new google.maps.InfoWindow({ content: content });
    google.maps.event.addListener(marker, 'click', (function(marker, i) {
        return function() {
            infowindow.setContent(content);
            infowindow.open(map, marker);
        }
    })(marker, i));
}

さて、ループの外に出てこれを呼び出すと:

addMarker(content, 39.8282, -98.5795, map, i)

マーカーを吐き出します!したがって、私の最初の考えは、私の緯度経度データに何か問題があるということでした。ただし、それらすべてをログに記録し、マーカー自体もログに記録したところ、マーカーが作成されたようです。私はそれらを見ません。

私は一体何を間違っているのでしょうか?

4

2 に答える 2

1

関数addMarker()にはいくつかの問題があります。

  1. への呼び出しはlon.toFixed(6)そこにあるべきではありません。lon直接使用するだけです。また、Maps API の用語との一貫性を保つために、lng代わりに名前を使用することをお勧めします。lon
  2. クリック イベント リスナーの関数を返す関数を使って派手な歌やダンスをする必要はありません。関数であるため、ここにはすでにクロージャーaddMarker()があります。さらに別の閉鎖は必要ありません。iまた、パラメーターはまったく必要ありません。これはコードの動作を妨げるものではありませんが、必要のない多くの余分な複雑さです.
function addMarker(content, lat, lng, map) {
    var point = new google.maps.LatLng(lat, lng);
    var marker = new google.maps.Marker({
        position: point,
        icon: "bullet-red-icon.png",
        map: map
    });
    var infowindow = new google.maps.InfoWindow({ content: content });
    google.maps.event.addListener(marker, 'click', function() {
        infowindow.setContent(content);
        infowindow.open(map, marker);
    });
}

更新: 南極大陸が見えるように、テスト ページを完全にズームアウトします。行方不明のマーカーを見つけましたか? :-)

(更新 2: マーカーが表示される場合と表示されない場合があります。しかし、読み続けてください...)

次に、XML ダウンロードで緯度と経度を確認します。次に例を示します。

<mlat>-82.753936</mlat>
<mlon>42.675168</mlon>
于 2013-08-31T05:58:51.630 に答える
0

以下のコードを複数のマーカー変数に使用arrは緯度経度値の配列です

   function initialize(arr) {

  directionsDisplay = new google.maps.DirectionsRenderer();
  geocoder = new google.maps.Geocoder();

  var mapOptions = {     
  };

  var icon = "bullet-red-icon.png";
  map = new google.maps.Map(document.getElementById('map_addresses'),mapOptions);

  jQuery(arr).each(function(i){
     if(typeof arr[i] != 'undefined'){  
      var latlng = new google.maps.LatLng(arr[i][0],arr[i][1]);
            geocoder.geocode(
                {'latLng': latlng},
                function(results, status) {
                if (status == google.maps.GeocoderStatus.OK) {
                  bounds.extend(results[0].geometry.location);
                  map.fitBounds(bounds);

                   marker = new google.maps.Marker({
                    map: map,
                    position: results[0].geometry.location,
                    icon: icon ,
                    animation: google.maps.Animation.DROP,
                  });
                  //google.maps.event.addListener(marker, 'click', toggleBounce);
                  markersArray.push(marker);
                } else {
                  alert('Geocode was not successful for the following reason: '
                    + status);
                }
              }
          );
     }
  });
}
google.maps.event.addDomListener(window, 'load', initialize);

これがあなたを助けることを願っています

于 2013-08-31T05:00:09.870 に答える