0

こんにちは、最初に js-placemaker を使用してつぶやきのテキストから場所を抽出することにより、Google マップにいくつかのつぶやきを配置しようとしています。

問題は、マップ上にさまざまなマーカーを配置しているが、Twitter の結果コールバックから最後のツイートのみを取得しており、マップ上のすべてのマーカーに同じ profile_img_url が表示されていることです。また、情報ウィンドウを機能させることもできません。

    function codeAddress(){
    var geocoder = new google.maps.Geocoder();;
    var mapOptions = {
    center: new google.maps.LatLng(35.74651,-39.46289), 
    zoom: 2,
     mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    // added this 
    var bounds = new google.maps.LatLngBounds();
    // create the map
    var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);

            $.getJSON("http://search.twitter.com/search.json?q=%23euronews&rpp=10&include_entities=true&result_type=mixed&callback=?", function (data) {
    $.each(data.results, function (i, item) {
    var screen_name = item.screen_name;
    var contentString=screen_name;
    var img = item.profile_image_url;
    var text=item.text;
    var profile_img=item.profile_image_url;
    var url=(item.entities.urls.length > 0 ? item.entities.urls[0].url : '');
    //  var latitude,longitude;
    Placemaker.getPlaces(text,
    function(o){
    console.log(o);

    var latitude=o.match.place.centroid.latitude,
    longitude=o.match.place.centroid.longitude; 
    var myLatLng = new google.maps.LatLng(latitude, longitude);
    var marker = new google.maps.Marker({
      icon: img,
      title: screen_name,
      map: map,
      position: myLatLng
    });

    var infowindow = new google.maps.InfoWindow({
    content: contentString
        });
    google.maps.event.addListener(marker, 'click', function() {
    infowindow.open(map,marker);
        });
    bounds.extend(myLatLng);



    });
    });
    // map.fitBounds(bounds);
    });
    }
4

1 に答える 1

1

この同様の質問と同じ根本的な問題。非同期コールバックで関数クロージャを適切に使用することで解決できます。

情報ウィンドウの問題は、コンテンツがないことです (screen_name と contentString は定義されていません)。

于 2012-08-12T15:21:06.643 に答える