[OpenLayers-Users] populate vector layer from json response

Sveen Atle Frenvik (Geomatikk IKT) Atle.Frenvik.Sveen at geomatikk.no
Tue Jun 21 03:37:15 EDT 2011


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 <p.scadden at gns.cri.nz> 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
		Users at lists.osgeo.org
		http://lists.osgeo.org/mailman/listinfo/openlayers-users
		


	
	
	_______________________________________________
	Users mailing list
	Users at lists.osgeo.org
	http://lists.osgeo.org/mailman/listinfo/openlayers-users



-- 
Atle Frenvik Sveen
Utvikler
Geomatikk IKT AS
tlf: 45 27 86 89
atle.frenvik.sveen at geomatikk.no
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/openlayers-users/attachments/20110621/7e6420bb/attachment.html


More information about the Users mailing list