html5 天地图,index.html

天地图-地图API-范例-根据关键字搜索纯POI(不搜公交线)

.search {

font-size: 13px;

border: 1px solid #999999;

}

.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;

}

var map;

var zoom = 12;

var localsearch;

var infoWin;

function onLoad() {

//初始化地图对象

map = new T.Map("mapDiv", {

projection: 'EPSG:4326',

datasourcesControl: true

});

//创建对象

var ctrl = new T.Control.MapType();

//添加控件

map.addControl(ctrl);

//设置显示地图的中心点和级别

map.centerAndZoom(new T.LngLat(116.40969, 39.89945), zoom);

var config = {

pageCapacity: 10,//每页显示的数量

onSearchComplete: localSearchResult//接收数据的回调函数

};

//创建搜索对象

localsearch = new T.LocalSearch(map, config);

rectTool = new T.RectangleTool(map);

rectTool.on('draw', function (e) {

onDrawCircle(e.currentRectangle.getLngLats()[0][0].lng,

e.currentRectangle.getLngLats()[0][0].lat,

e.currentRectangle.getLngLats()[0][2].lng,

e.currentRectangle.getLngLats()[0][2].lat,

);

generate_url();

});

var config2 = {

showLabel: true,

color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5

};

//创建标注工具对象

polygonTool = new T.PolygonTool(map, config2);

polygonTool.on('draw', function (e) {

var result = ""

for(var i=0; i

result += e.currentLnglats[i].lng;

result += ",";

result += e.currentLnglats[i].lat;

result += ";"

}

document.getElementById('info').value = result.substr(0, result.length-1)

generate_url();

});

load_polygen();

}

function getUrlParam(name) {

var reg = new RegExp("(^|&)" + name + "=([^&]*)(&|$)");

var r = window.location.search.substr(1).match(reg);

if(r != null) {

//return unescape(r[2]);

return r[2];

}

return null;

}

function generate_url(){

var url = document.getElementById('info').value;

var base_url = window.location.href.split("?")[0]

var t_url = base_url + "?points="+url;

document.getElementById('url').value = t_url;

}

function load_polygen(){

var url_points = getUrlParam("points")

if (!url_points){

return;

}

document.getElementById('info').value = url_points;

var lnglats = url_points.split(";")

var points=[];

for (var i=0; i

var tmp = lnglats[i].split(",");

points.push(new T.LngLat(tmp[0], tmp[1]));

}

//创建面对象

var polygon = new T.Polygon(points,{

color: "blue", weight: 3, opacity: 0.5, fillColor: "#FFFFFF", fillOpacity: 0.5

});

//向地图上添加面

map.addOverLay(polygon);

map.centerAndZoom(points[0], 13);

}

function onDrawCircle(a, b, c, d) {

document.getElementById('info').value = a +"," + b + ";"+ c + "," + b + ";" +c + "," + d + ";" + a + "," + d + ";" + a +"," + b;

}

function localSearchResult(result) {

//清空地图及搜索列表

clearAll();

//添加提示词

prompt(result);

//根据返回类型解析搜索结果

switch (parseInt(result.getResultType())) {

case 1:

//解析点数据结果

pois(result.getPois());

break;

case 2:

//解析推荐城市

statistics(result.getStatistics());

break;

case 3:

//解析行政区划边界

area(result.getArea());

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 += "

您是否要在" + promptAdmins[0].name + "搜索更多包含" + obj.getKeyword() + "的相关内容?

";

}

else if (promptType == 2) {

promptHtml += "

" + promptAdmins[0].name + "没有搜索到与" + obj.getKeyword() + "相关的结果。

";

if (meanprompt) {

promptHtml += "

您是否要找:" + meanprompt + "

";

}

}

else if (promptType == 3) {

promptHtml += "

有以下相关结果,您是否要找:

"

for (i = 0; i < promptAdmins.length; i++) {

promptHtml += "

" + promptAdmins[i].name + "

";

}

}

}

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.addOverLay(marker);

//注册标注点的点击事件

marker.addEventListener("click", function () {

this.showPosition(marker, name, winHtml);

}, this);

zoomArr.push(lnglat);

//在页面上显示搜索的列表

var a = document.createElement("a");

a.href = "javascript://";

a.innerHTML = name;

a.onclick = function () {

showPosition(marker, name, winHtml);

}

divMarker.appendChild(document.createTextNode((i + 1) + "."));

divMarker.appendChild(a);

divMarker.appendChild(document.createElement("br"));

})(i);

}

//显示地图的最佳级别

map.setViewport(zoomArr);

//显示搜索结果

divMarker.appendChild(document.createTextNode('共' + localsearch.getCountNumber() + '条记录,分' + localsearch.getCountPage() + '页,当前第' + localsearch.getPageIndex() + '页'));

document.getElementById("searchDiv").appendChild(divMarker);

document.getElementById("resultDiv").style.display = "block";

}

}

//显示信息框

function showPosition(marker, name) {

if (infoWin) {

map.removeOverLay(infoWin);

infoWin = null;

}

var html = "

" + name + "
";

infoWin = new T.InfoWindow(html, new T.Point([0, 0]));

marker.openInfoWindow(infoWin);

}

//解析推荐城市

function statistics(obj) {

if (obj) {

//坐标数组,设置最佳比例尺时会用到

var pointsArr = [];

var priorityCitysHtml = "";

var allAdminsHtml = "";

var priorityCitys = obj.priorityCitys;

if (priorityCitys) {

//推荐城市显示

priorityCitysHtml += "在中国以下城市有结果

  • ";

for (var i = 0; i < priorityCitys.length; i++) {

priorityCitysHtml += "

" + priorityCitys[i].name + "(" + priorityCitys[i].count + ")";

}

priorityCitysHtml += "

";

}

var allAdmins = obj.allAdmins;

if (allAdmins) {

allAdminsHtml += "更多城市

  • ";

for (var i = 0; i < allAdmins.length; i++) {

allAdminsHtml += "

" + allAdmins[i].name + "(" + allAdmins[i].count + ")";

var childAdmins = allAdmins[i].childAdmins;

if (childAdmins) {

for (var m = 0; m < childAdmins.length; m++) {

allAdminsHtml += "

" + childAdmins[m].name + "(" + childAdmins[m].count + ")
";

}

}

allAdminsHtml += "

"

}

allAdminsHtml += "

";

}

document.getElementById("statisticsDiv").style.display = "block";

document.getElementById("statisticsDiv").innerHTML = priorityCitysHtml + allAdminsHtml;

}

}

//解析行政区划边界

function area(obj) {

if (obj) {

if(obj.points){

//坐标数组,设置最佳比例尺时会用到

var pointsArr = [];

var points = obj.points;

for (var i = 0; i < points.length; i++) {

var regionLngLats = [];

var regionArr = points[i].region.split(",");

for (var m = 0; m < regionArr.length; m++) {

var lnglatArr = regionArr[m].split(" ");

var lnglat = new T.LngLat(lnglatArr[0], lnglatArr[1]);

regionLngLats.push(lnglat);

pointsArr.push(lnglat);

}

//创建线对象

var line = new T.Polyline(regionLngLats, {

strokeColor: "blue",

strokeWeight: 3,

strokeOpacity: 1,

strokeStyle: "dashed"

});

//向地图上添加线

map.addOverLay(line);

}

//显示最佳比例尺

map.setViewport(pointsArr);

}

if(obj.lonlat){

var regionArr = obj.lonlat.split(",");

map.panTo(new T.LngLat(regionArr[0], regionArr[1]));

}

}

}

//清空地图及搜索列表

function clearAll() {

map.clearOverLays();

document.getElementById("searchDiv").innerHTML = "";

document.getElementById("resultDiv").style.display = "none";

document.getElementById("statisticsDiv").innerHTML = "";

document.getElementById("statisticsDiv").style.display = "none";

document.getElementById("promptDiv").innerHTML = "";

document.getElementById("promptDiv").style.display = "none";

document.getElementById("suggestsDiv").innerHTML = "";

document.getElementById("suggestsDiv").style.display = "none";

document.getElementById("lineDataDiv").innerHTML = "";

document.getElementById("lineDataDiv").style.display = "none";

}

//清除覆盖物

function remove_overlay(){

map.clearOverLays();

}

本示例演示如何根据关键字搜索纯POI(不搜公交线)

转到第页

value="转到"/>

一键复制

编辑

Web IDE

原始数据

按行查看

历史

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值