try using an OpenLayers.Geometry.Point instead of an OpenLayers.LonLat

ie (untested, but i think this is rather correct):


function parseTweetsQ(){
    if (tweetsQ.length > 0) {
        var tweet = tweetsQ.pop();
        if (tweet.geo){
            tweet.point = new 
OpenLayers.Geometry.Point(tweet.geo.coordinates[0],tweet.geo.coordinates[1]).transform(new
 OpenLayers.Projection("EPSG:4326"),map.getProjectionObject());
            tweet.attributes = {}; //in this you coukd stuff attributes of the 
tweet for easy access on clicks etc.

            plotTwt(tweet);
        }
    }
}

function plotTwt(tweet){
    //why do you keep adding the layer for each tweet? 

    map.addLayer(tweetz);
    tweet.marker = new 
OpenLayers.Feature.Vector(tweet.point,{attributes:{tweet.attributes]});
    tweetz.addFeatures([tweet.marker]);
}




On 2011-06-21 05:00, Nicholas Efremov-Kendall wrote: 

        Hi Phil et al, 

        Thanks for your response. The code as is does iterate through the 
features as they are returned. I have a handle on it up to the plotting 
function. An alert on the tweet.marker object returns [object Object], while 
tweet.latlng returns readable coordinates lon=38.6834,lat=-90.4313. I guess 
what I'm unsure about is how to parse the object which is passed to the third 
function. Thanks again.


        function acquireTweets(){
        $.getJSON(createTWTsrcURL(), function(data){
        if(data.results)
        $.each(data.results, function(i, tweet){
        if (tweet.geo || tweet.location)
        tweetsQ.push(tweet);
        });
        refreshQuery = data.refresh_url;
        });}

        function parseTweetsQ(){
        if (tweetsQ.length > 0) {
        var tweet = tweetsQ.pop();
        if (tweet.geo){
        tweet.latlng = new 
OpenLayers.LonLat(tweet.geo.coordinates[0],tweet.geo.coordinates[1]);
        plotTwt(tweet);
        }}}

        function plotTwt(tweet){
        map.addLayer(tweetz);
        tweet.marker = new OpenLayers.Feature.Vector(new 
OpenLayers.Geometry.Point(tweet.latlng).transform(new 
OpenLayers.Projection("EPSG:4326"),map.getProjectionObject()));
        tweetz.addFeatures([tweet.marker]);}




        On Mon, Jun 20, 2011 at 9:13 PM, Phil Scadden <[email protected]> 
wrote:
        

                I have no idea what the object returned by twitter is but 
surely, but if
                you are using jsonp, then
                have in your code something like:
                jsonp_function(json)
                where jsonp_function is the name of jsonp callback and json is 
the
                returned object. I would guess it contains an array of feature 
type
                objects, so you would iterate through the array, creating 
feature for
                each row, and calling vectorLayer.addFeatures(features) to add 
them to
                the vector layer.
                
                Notice: This email and any attachments are confidential. If 
received in error please destroy and immediately notify us. Do not copy or 
disclose the contents.
                
                _______________________________________________
                Users mailing list
                [email protected]
                http://lists.osgeo.org/mailman/listinfo/openlayers-users
                


        
        
        _______________________________________________
        Users mailing list
        [email protected]
        http://lists.osgeo.org/mailman/listinfo/openlayers-users



-- 
Atle Frenvik Sveen
Utvikler
Geomatikk IKT AS
tlf: 45 27 86 89
[email protected]
_______________________________________________
Users mailing list
[email protected]
http://lists.osgeo.org/mailman/listinfo/openlayers-users

Reply via email to