<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta name="keywords" content="天地图" />
<title>天地图-地图API-范例-根据关键字本地搜索</title>
<style type="text/css">
#consoleDiv > div
{
margin-top: 10px;
margin-bottom: 10px;
}
.search .lnglatDiv
{
font-size: 13px;
}
.ls
{
line-height: 27px;
padding-left: 7px;
}
.prompt
{
display: none;
font-size: 13px;
border: 1px solid #999999;
}
.statistics
{
display: none;
font-size: 13px;
border: 1px solid #999999;
overflow-y: scroll;
height: 150px;
}
.suggests
{
display: none;
font-size: 13px;
border: 1px solid #999999;
}
.lineData
{
display: none;
font-size: 13px;
border: 1px solid #999999;
}
.result
{
display: none;
font-size: 12px;
border: 1px solid #999999;
line-height: 27px;
padding-left: 7px;
}
</style>
<script type="text/javascript" src="http://api.tianditu.com/api?v=4.0"></script>
<script>
var map;
var zoom = 14;
var localsearch;
var infoWin;
var myMarker;
function onLoad() {
//初始化地图对象
map = new T.Map("mapDiv");
//设置显示地图的中心点和级别
map.centerAndZoom(new T.LngLat(116.40969, 39.89945), zoom); // 北京
//允许鼠标滚轮缩放地图
map.enableScrollWheelZoom();
//创建比例尺控件对象
var scale = new T.Control.Scale();
map.addControl(scale); //添加比例尺控件
//创建缩放平移控件对象
var control = new T.Control.Zoom();
map.addControl(control); //添加缩放平移控件
control.setPosition(T_ANCHOR_TOP_LEFT); //放置在左上角;
var config = {
pageCapacity: 10, // 每页显示的容量(数量)
onSearchComplete: localSearchResult, // 检索结束后的回调函数(接收数据的回调函数)
callback: getLngLat // 鼠标获取地理坐标回调函数
};
//创建鼠标获取地理坐标对象
pickup = new T.CoordinatePickup(map, config);
pickup.addEvent(); // 开启鼠标获取地理坐标事件
//创建搜索对象
localsearch = new T.LocalSearch(map, config);
localsearch.setSpecifyAdminCode(156110000); // 设置搜索范围(156110000 - 北京)
}
// 根据输入关键字进行搜索
function doSearch() {
var keyWord = document.getElementById('keyWord').value;
//清空地图及搜索列表
clearAll();
//搜索
if (keyWord && keyWord !== "") {
localsearch.search(keyWord);
}
//加上标注
if (myMarker) {
map.addOverLay(myMarker);
}
}
// 搜索返回处理
function localSearchResult(result) {
//添加提示词
prompt(result);
//根据返回类型解析搜索结果
var iResultType = parseInt(result.getResultType());
switch (iResultType) {
case 1:
//解析点(搜索目标)数据结果
pois(result.getPois());
break;
case 2:
//解析推荐城市 (示例:在不限“搜索范围”时搜索“中山路”可试到效果)
statistics(result.getStatistics());
break;
case 3:
//解析行政区划边界 (示例:在不限“搜索范围”时搜索“广东”可试到效果)
area(result.getArea());
break;
case 4:
//解析建议词信息 (示例:localsearch.search(document.getElementById('keyWord').value, 4), 加参数“4”可试到效果)
suggests(result.getSuggests());
break;
case 5:
//解析公交信息 (示例:在不限“搜索范围”时搜索“68路”可试到效果)
lineData(result.getLineData());
break;
}
}
//解析提示词
function prompt(obj) {
var prompts = obj.getPrompt();
if (prompts) {
var promptHtml = "";
for (var i = 0; i < prompts.length; i++) {
var prompt = prompts[i];
var promptType = prompt.type;
var promptAdmins = prompt.admins;
var meanprompt = prompt.DidYouMean;
if (promptType == 1) {
promptHtml += "<p>您是否要在" + promptAdmins[0].name + "</strong>搜索更多包含<strong>" + obj.getKeyword() + "</strong>的相关内容?<p>";
}
else if (promptType == 2) {
promptHtml += "<p>在<strong>" + promptAdmins[0].name + "</strong>没有搜索到与<strong>" + obj.getKeyword() + "</strong>相关的结果。<p>";
if (meanprompt) {
promptHtml += "<p>您是否要找:<font weight='bold' color='#035fbe'><strong>" + meanprompt + "</strong></font><p>";
}
}
else if (promptType == 3) {
promptHtml += "<p style='margin-bottom:3px;'>有以下相关结果,您是否要找:</p>"
for (i = 0; i < promptAdmins.length; i++) {
promptHtml += "<p>" + promptAdmins[i].name + "</p>";
}
}
}
//提示词面板
if (promptHtml != "") {
document.getElementById("promptDiv").style.display = "block";
document.getElementById("promptDiv").innerHTML = promptHtml;
}
}
}
//解析点数据结果
function pois(obj) {
if (obj) {
//显示搜索列表
var divMarker = document.createElement("div");
//坐标数组,设置最佳比例尺时会用到
var zoomArr = [];
for (var i = 0; i < obj.length; i++) {
//闭包
(function (i) {
//名称
var name = obj[i].name;
//地址
var address = obj[i].address;
//坐标
var lnglatArr = obj[i].lonlat.split(" ");
var lnglat = new T.LngLat(lnglatArr[0], lnglatArr[1]);
var winHtml = "地址:" + address;
//创建标注对象
var marker = new T.Marker(lnglat);
//地图上添加标注点
map.addOverLa