WebMatrix: @nakaji のコードをパクって「えひめFreeWi-Fi」スポットを Google Map へマッピング

執筆日時:

f:id:daruyanagi:20140728155412j:plain

SGMLReaderで「えひめFreeWi-Fi」サービス提供箇所をスクレイピング - なか日記 を読んで存在を知った。

産学官で構成する愛媛県公衆無線LAN推進協議会では、外国人観光客や県内外の旅行者、地域住民等が無料で利用できるWi-Fiスポットの整備を民設民営で進めることにより、その利便性を確保し、愛媛県内の地域活性化を図る「えひめFreeWi-Fiプロジェクト」を推進しています。

愛媛県庁/えひめFree Wi-Fiサービス提供箇所等のお知らせ

“利便性を確保し”とか“地域活性化を図る”とかいってる割りには、クソ不便なテーブルデータしか用意してないのって、ほんとお役所だなーと思いますね。

というわけで、なかじが作ってくれたコードをまるパクリして、それを Google Map へマッピングしてみた。これで、ちょっとは利便性が向上するんじゃないだろうか。

マッピングのライブラリは、

をもらってきた。ちょっとコードが古いので、TypeScript で書き直したりしてみたい。

Web ページのコードはこんな感じ(spotList あたりのコードとか汚いけど)。WebMatrix(ASP.NET Web Pages)はこういう“ペライチ”のページを作るときに便利よね。

# ~/Default.cshtml

@using System.Xml.Linq @using Sgml

@{ var urlString = "http://www.pref.ehime.jp/h12600/wifi/osirase260822.html";

XDocument xml; using (var sgml = new SgmlReader() { Href = urlString, IgnoreDtd = true }) { xml = XDocument.Load(sgml); }

var ns = xml.Root.Name.Namespace; var spots = xml.Descendants(ns + "table") .Last() .Descendants(ns + "tr") .Skip(1) // タイトルをスキップ .Select(e => e.Elements(ns + "td").ToList()) .Select(x => new { Place = x[1].Value, Address = x[2].Value, ServiceProvider = x[3].Value });

var spotList = string.Join("\r\n", spots.Select(_ => _.Address.Replace("−", "-")).ToArray()); }

<!DOCTYPE html>

<html lang="ja"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/> <meta charset="utf-8" /> <title>マイ サイトのタイトル</title> <link href="~/favicon.ico" rel="shortcut icon" type="image/x-icon" /> <script src="http://maps.google.com/maps/api/js?sensor=false"></script> <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> <script src="~/Scripts/sirusiizu.js"> </script> </head> <body>

<textarea id="addressList" style="width: 80%; height: 120px;">@spotList</textarea>

<div id="map" style="width: 80%; height: 360px;">

</div>

<script> sirusiizu.initialize("map"); sirusiizu.marking(document.getElementById("addressList").value); </script> </body> </html>

f:id:daruyanagi:20141216181643p:plain

割とたくさんあるんやなー。

まじ申し訳ないけど、割とやっつけ仕事なので、キレイに仕上げてくれていいのよ?