0

您好,我试图通过首先使用 js-placemaker(雅虎的用于从任何类型的数据中对文本进行地理定位的网络服务)从推文的文本中提取位置来将一些推文放在谷歌地图上。

问题是我在地图上放置了不同的标记,但我只从 twitter resutlts 回调中获得最后一条推文,并且在地图上的每个标记上看到相同的 profile_img_url。我也无法让 infowindows 工作。

    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

与此类似问题相同的根本问题。可以通过在异步回调上适当使用函数闭包来解决。

您对 infowindow 的问题是没有内容(screen_name 和 contentString 未定义)。

于 2012-08-12T15:21:06.643 回答