9

Jun

Generatore di Feed Geografico (GeoRss)

Questo esempio mostra come, con un handler ASP.NET, possa generare a runtime un FeedRss geografico prendendo i dati da un dataset. L'esempio funziona in 2.0 senza la necessità dello stack WCF. Inoltre, il risultato, può essere dato in pasto a GMaps o BingMaps per tracciare una mappa delle news "geografiche". A voi il codice:

[code language="csharp"]

<%@ WebHandler Language="C#" Class="Geo" %>

using System;
using System.Web;

public class Geo : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        context.Response.ContentType = "text/xml";

        System.IO.StreamWriter MyWriter = null;
        GeoDataSetTableAdapters.GeoDataTableAdapter table = new GeoDataSetTableAdapters.GeoDataTableAdapter();
        GeoDataSet.GeoDataDataTable data = table.GetData();

        MyWriter = new System.IO.StreamWriter(context.Response.OutputStream);
        MyWriter.WriteLine("");
        MyWriter.WriteLine("                 xmlns:geo=\"http://www.w3.org/2003/01/geo/wgs84_pos#\"
                 xmlns:georss=\"http://www.georss.org/georss\"
                 xmlns:gml=\"http://www.opengis.net/gml\"
                 xmlns:mappoint=\"http://virtualearth.msn.com/apis/annotate#\">");
        MyWriter.WriteLine("");
        MyWriter.WriteLine("Personal life journeys");
        MyWriter.WriteLine("http://www.robertofreato.com");
        MyWriter.WriteLine("These are destinations I've visited since I was teen...");
        MyWriter.WriteLine("en-us");
        MyWriter.WriteLine("cht");

        foreach (System.Data.DataRow row in data.Rows)
        {           
            MyWriter.WriteLine("");
            MyWriter.WriteLine("" + row["City"].ToString() + "");
            MyWriter.WriteLine("" + row["Description"].ToString() + "");
            MyWriter.WriteLine("" + row["Lat"].ToString().Replace(',','.') + "");
            MyWriter.WriteLine("" + row["Long"].ToString().Replace(',','.') + "");
            MyWriter.WriteLine("
");
        }
        MyWriter.WriteLine("
");
        MyWriter.WriteLine("
");
        MyWriter.Close();
    }

    public bool IsReusable {
        get {
            return false;
        }
    }
}[/code]

 

by Roberto Freato on 6/9/2010
Post archive