Views
日本語の住所入力から地図情報を検索するために、Virtual Earth Map Controlの参照に次の修正を行う必要があります。
<%-- 修正前 <script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2" type="text/javascript"></script> --%> <script src="http://dev.virtualearth.net/mapcontrol/mapcontrol.ashx?v=6.2&mkt=ja-jp" type="text/javascript"></script>
(同様の修正を「プロジェクトルート/Views/Dinners/Map.ascx」にも行う必要があります。)
詳細については、「Virtual Earth Map Control SDK バージョン 6.1 ローカライズされた結果を返す方法」(MSDN)を参照して下さい。
Scripts
マップの初期表示に日本列島が表示されるように次の修正を行いました。
なお、日本経緯度原点については「日本経緯度原点(東京都港区麻布台2−18−1)」(国土地理院)を参考にしました。
日本経緯度原点として
経度:東経 139°44′28″.8759
緯度:北緯 35°39′29″.1572
/// <reference path="jquery-1.2.6.js" />
var map = null;
var points = [];
var shapes = [];
var center = null;
function LoadMap(latitude, longitude, onMapLoaded) {
map = new VEMap('theMap');
options = new VEMapOptions();
options.EnableBirdseye = false;
// Makes the control bar less obtrusize.
map.SetDashboardSize(VEDashboardSize.Small);
if (onMapLoaded != null)
map.onLoadMap = onMapLoaded;
if (latitude != null && longitude != null) {
center = new VELatLong(latitude, longitude);
} else { // 追加
center = new VELatLong(35.39291572, 139.44288759); // 日本経緯度原点
}
map.LoadMap(center, null, null, null, null, null, null, options);
}
...
Helpers
Dinner情報入力の際、国コードと電話番号の整合性チェックが行われます。本稿では、日本国内の住所を入力できるようにしたので、国コードとして「JP」、それと対になる電話番号の正規表現を追加しました(電話番号の正規表現については「Light Material:電話番号の正規表現」に記載の正規表現を使用させていだだきました)。
static IDictionary<string, Regex> countryRegex = new Dictionary<string, Regex>()
{
{ "USA", new Regex("^[2-9]\\d{2}-\\d{3}-\\d{4}$")},
{ "UK", new Regex("(^1300\\d{6}$)|(^1800|1900|1902\\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\\d{4}$)|(^04\\d{2,3}\\d{6}$)")},
{ "Netherlands", new Regex("(^\\+[0-9]{2}|^\\+[0-9]{2}\\(0\\)|^\\(\\+[0-9]{2}\\)\\(0\\)|^00[0-9]{2}|^0)([0-9]{9}$|[0-9\\-\\s]{10}$)")},
{ "JP", new Regex("(?!^(090|080|070))(?=^\\d{2,5}?-\\d{1,4}?-\\d{4}$)[\\d-]{12}|" + // 固定電話
"(?=^(090|080|070)-\\d{4}-\\d{4}$)[\\d-]{13}|" + // 携帯電話
"(?=^0120-\\d{2,3}-\\d{3,4})[\\d-]{12}|" +
"^0800-\\d{3}-\\d{4}")}
};
