我要实现的是一个简单的查询功能,就是把商家用地标显示在谷歌地图上,然后查询的时候只显示要查询的商家,其他地标都隐藏。现在问题是查询的时候其他地标不隐藏。
下面是我的源码
var map; //全局GMap
var geocoder = null;
//创建一个自定义的Gicon对象
var myIcon = new GIcon();
myIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
myIcon.shadow = "http://labs.google.com/ridefinder/image/mm_20_shadow.png";
myIcon.iconSize = new GSize(20,25);
myIcon.shadowSize = new GSize(22, 20);
myIcon.iconAnchor = new GPoint(6, 20);
myIcon.infoWindowAnchor = new GPoint(5, 1);
var ersArray = []; //一组GMarker对象
var geoPoint = []; //一组点对象 //网页加载时用于初始化Google地图
function load()
{
if (GBrowserIsCompatible())//检查浏览器兼容性
//如果浏览器无法满足加载Google地图的最低条件,则不执行进一步的操作
//这是编写Google地图网页的一个值得推荐的做法
{
//创建GMap2对象
map = new GMap2(document.getElementById("map_canvas")); //添加两个控件
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
//map.addControl(new GLargeMapControl());
//添加滚动缩放函数
map.enableScrollWheelZoom(); geocoder = new GClientGeocoder(); var geoPoint0 = new GLatLng(30.542, 114.362);
//为武汉大学添加地标er0
er0 = new GMarker(geoPoint0, { icon: myIcon, title: "武汉大学" });
//显示地图,并设置其中心、缩放值,此处将地图中心设在武汉大学
map.setCenter(geoPoint0, 13);
map.addOverlay(er0);
var Longitude="<%=str_stk1 %>".split(";");
var Latitude="<%=str_stk2 %>".split(";");
var Name = "<%=str_stk3 %>".split(";");
var newer = null;
for (var i = 0; i < "<%=g_m %>"; i++)
{
newer = addOverLay(Latitude[i], Longitude[i], Name[i]);
ersArray[i].push(newer); alert(ok);
}
var h;
for (h in ersArray)
{
ersArray[h].setMap(map);
} }
}
function createMarkers(point, name, html, icon)
{
//创建地标
var er = new GMarker(point, { icon: icon });
//以下部分用于监听单击事件
GEvent.addListener(er, "click", function () {
er.openInfoWindowHtml(html);
}
);
return er;
} function addOverLay(x, y, z)
{
var geoPoint = new GLatLng(x, y);
//创建GMarker对象
var ers0 = new GMarker(geoPoint, { icon: myIcon, title: z});
//在地图上添加ers0地标
map.addOverlay(ers0);
return ers0;
}
var oldTargetMarker = null;
function showAddress(address)
{
if (address == "")
{
alert("输入地址信息");
return ;
}
if (oldTargetMarker)
{
//上一次查询的标注,本次查询时删除以免产生误解
map.removeOverlay(oldTargetMarker);
} var Longitude = "<%=str_stk1 %>".split(";");
var Latitude = "<%=str_stk2 %>".split(";");
var Name = "<%=str_stk3 %>".split(";"); var m=0;
var n =new Array();
for (i = 0; i < "<%=g_m %>"; i++)
{
//if (Name[i].indexOf(address, 0) >= 0)
//break;
if (Name[i].indexOf(address, 0) >= 0)
{
n[m] = i;
m++;
}
} if (m==0)
{ //如果本地数据没有就查找map的数据源
if (geocoder)
{
geocoder.getLatLng(address,
function (point) {
if (!point) { //没有找到
alert(address + " not found");
}
else {
//在map数据源中找到
map.setCenter(point, 13);
var er = new GMarker(point);
oldTargetMarker = er;
map.addOverlay(er);
er.openInfoWindow(document.createTextNode(address));
var x;
for (x in ersArray)
{
ersArray[x].setMap(null);
}
}
});
}
} else
{ for (var j = 0; j < m; j++)
{ //在本地数据中找到
var locationY = Longitude[n[j]];
var locationX = Latitude[n[j]];
var target = new GLatLng(locationX, locationY);
var er = new GMarker(target);
oldTargetMarker = er;
map.setCenter(target, 13);
map.addOverlay(er);
er.openInfoWindow(document.createTextNode(Name[n[j]]));
var y;
for (y in ersArray)
{
ersArray[y].setMap(null);
}
}
}
}
function GBrowserIsCompatible() { return true; }
下面是我的源码
var map; //全局GMap
var geocoder = null;
//创建一个自定义的Gicon对象
var myIcon = new GIcon();
myIcon.image = "http://labs.google.com/ridefinder/images/mm_20_red.png";
myIcon.shadow = "http://labs.google.com/ridefinder/image/mm_20_shadow.png";
myIcon.iconSize = new GSize(20,25);
myIcon.shadowSize = new GSize(22, 20);
myIcon.iconAnchor = new GPoint(6, 20);
myIcon.infoWindowAnchor = new GPoint(5, 1);
var ersArray = []; //一组GMarker对象
var geoPoint = []; //一组点对象 //网页加载时用于初始化Google地图
function load()
{
if (GBrowserIsCompatible())//检查浏览器兼容性
//如果浏览器无法满足加载Google地图的最低条件,则不执行进一步的操作
//这是编写Google地图网页的一个值得推荐的做法
{
//创建GMap2对象
map = new GMap2(document.getElementById("map_canvas")); //添加两个控件
map.addControl(new GSmallMapControl());
map.addControl(new GMapTypeControl());
//map.addControl(new GLargeMapControl());
//添加滚动缩放函数
map.enableScrollWheelZoom(); geocoder = new GClientGeocoder(); var geoPoint0 = new GLatLng(30.542, 114.362);
//为武汉大学添加地标er0
er0 = new GMarker(geoPoint0, { icon: myIcon, title: "武汉大学" });
//显示地图,并设置其中心、缩放值,此处将地图中心设在武汉大学
map.setCenter(geoPoint0, 13);
map.addOverlay(er0);
var Longitude="<%=str_stk1 %>".split(";");
var Latitude="<%=str_stk2 %>".split(";");
var Name = "<%=str_stk3 %>".split(";");
var newer = null;
for (var i = 0; i < "<%=g_m %>"; i++)
{
newer = addOverLay(Latitude[i], Longitude[i], Name[i]);
ersArray[i].push(newer); alert(ok);
}
var h;
for (h in ersArray)
{
ersArray[h].setMap(map);
} }
}
function createMarkers(point, name, html, icon)
{
//创建地标
var er = new GMarker(point, { icon: icon });
//以下部分用于监听单击事件
GEvent.addListener(er, "click", function () {
er.openInfoWindowHtml(html);
}
);
return er;
} function addOverLay(x, y, z)
{
var geoPoint = new GLatLng(x, y);
//创建GMarker对象
var ers0 = new GMarker(geoPoint, { icon: myIcon, title: z});
//在地图上添加ers0地标
map.addOverlay(ers0);
return ers0;
}
var oldTargetMarker = null;
function showAddress(address)
{
if (address == "")
{
alert("输入地址信息");
return ;
}
if (oldTargetMarker)
{
//上一次查询的标注,本次查询时删除以免产生误解
map.removeOverlay(oldTargetMarker);
} var Longitude = "<%=str_stk1 %>".split(";");
var Latitude = "<%=str_stk2 %>".split(";");
var Name = "<%=str_stk3 %>".split(";"); var m=0;
var n =new Array();
for (i = 0; i < "<%=g_m %>"; i++)
{
//if (Name[i].indexOf(address, 0) >= 0)
//break;
if (Name[i].indexOf(address, 0) >= 0)
{
n[m] = i;
m++;
}
} if (m==0)
{ //如果本地数据没有就查找map的数据源
if (geocoder)
{
geocoder.getLatLng(address,
function (point) {
if (!point) { //没有找到
alert(address + " not found");
}
else {
//在map数据源中找到
map.setCenter(point, 13);
var er = new GMarker(point);
oldTargetMarker = er;
map.addOverlay(er);
er.openInfoWindow(document.createTextNode(address));
var x;
for (x in ersArray)
{
ersArray[x].setMap(null);
}
}
});
}
} else
{ for (var j = 0; j < m; j++)
{ //在本地数据中找到
var locationY = Longitude[n[j]];
var locationX = Latitude[n[j]];
var target = new GLatLng(locationX, locationY);
var er = new GMarker(target);
oldTargetMarker = er;
map.setCenter(target, 13);
map.addOverlay(er);
er.openInfoWindow(document.createTextNode(Name[n[j]]));
var y;
for (y in ersArray)
{
ersArray[y].setMap(null);
}
}
}
}
function GBrowserIsCompatible() { return true; }
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货