本应用是一个基于ASP.NET MVC的国家定位器,它使用谷歌地图API来显示全球各个国家的地理位置。用户可以通过一个搜索框输入搜索条件,动态地在地图上显示匹配的地点。
以下是实现这个应用的步骤和关键点:
实现目标:
1. 当搜索框为空时,显示所有国家的位置。
2. 当搜索框中输入特定字符时,如“e”,则显示所有以“e”开头的国家。
实现步骤:
1. 向ASP.NET MVC应用中添加实体数据模型,例如名为“GoogleMap”的模型。
2. 添加一个地图控制器,并在其中添加一个索引操作,返回一个包含所有位置的视图列表。
3. 创建一个名为“Index”的视图,显示所有位置和搜索框。
4. 实现响应式搜索,通过NuGet添加jQuery和Ajax脚本文件,并将其拖放到Index视图中。
5. 当用户在搜索框中输入字符时,通过跟踪keyup事件,使用基于jQuery的Ajax调用将字符发送到Action搜索。
6. 实现搜索操作,并显示以输入字符开头的国家列表。
7. 渲染谷歌地图,需要添加谷歌地图API脚本文件和密钥,并创建google.maps.Map对象,以显示地图。
8. 根据搜索结果绘制地图,使用“pinball.png”作为标记。为此,需要为每个结果的Lat和Lng创建google.maps.LatLng对象,并将其传递给google.maps.Marker对象以绘制该位置。
// 控制器源代码
using GoogleMap.Models;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace GoogleMap.Controllers
{
public class MapController : Controller
{
// GET: Map
public ActionResult Index()
{
GoogleMapEntities GE = new GoogleMapEntities();
return View(GE.Locations.ToList());
}
[HttpPost]
public ActionResult Search(string Location)
{
GoogleMapEntities GE = new GoogleMapEntities();
var result = GE.Locations.Where(x => x.LocationName.StartsWith(Location)).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
}
}
}
// 索引视图源代码
@model IEnumerable
@Html.TextBox("txtSearch", null, new { placeholder = 'Search A Country' })
@foreach (var item in Model) { }