谷歌地图标记管理器
google map marker manager
我有一些问题显示2个不同的标记取决于缩放级别。例如,如果缩放级别小于10,则显示图标a,如果缩放级别大于10,则显示图标2。我一直在看市场经理,但是有点迷路了。下面是我的代码:
var url = "json.api";
function initialize() {
var myLatlng = new google.maps.LatLng(0, 0);
var myOptions = {
maxZoom: 16,
zoomControl: true,
disableDefaultUI: true,
center: myLatlng,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
downloadUrl(url, function(data) {
var j = eval('(' + response + ')');
var jlength = j.data.hotels.length;
var bounds = new google.maps.LatLngBounds();
for(i=0; i < jlength; i++) {
var x = parseFloat(j.data.hotels[i].lat);
var y = parseFloat(j.data.hotels[i].lon);
var z = new google.maps.LatLng(x,y);
var title = j.data.hotels[i].title;
var hotel_id = j.data.hotels[i].id;
var address = j.data.hotels[i].address;
var star = j.data.hotels[i].star;
var thumbnail = j.data.hotels[i].thumbnail;
var contentstring = 'some html';
var marker = createMarker();
var infowindow = new google.maps.InfoWindow({
content: contentstring
});
bounds.extend(z);
map.fitBounds(bounds);
//NOT SURE IF THESE ARE NEEDED
// zoomChangeBoundsListener = google.maps.event.addListener(map, 'bounds_changed', function(event) {
// google.maps.event.removeListener(zoomChangeBoundsListener);
// });
// google.maps.event.addListener(map, 'zoom_changed', function() {
// });
};
if (map.getZoom() == 21) {map.setZoom(16);}
if (map.getZoom() < 12) {map.setZoom(map.getZoom()+1);}
//alert(map.getZoom())
function createMarker(){
var marker = new google.maps.Marker({
position: z,
map: map,
title: title,
html: contentstring,
icon: 'icona.png'
});
google.maps.event.addListener(marker,'click',function(){
infowindow.setContent(this.html);
infowindow.open(map,marker);
});
};
});
};
正如你所看到的,我有一个json文件,我循环获取lat和lng(和其他位),然后创建一个标记,在我的json文件中显示所有的信息窗口等....我可以不只是创建第二个标记函数,即createMarker2和一些如何调用,如果缩放大于10?任何帮助都会很感激。我在网上看了一些例子,但是有些困惑。
你有一段注释掉了,这是至关重要的。您需要侦听zoom_changed事件。检查map.getZoom()不会完成任何事情,除非它在这个事件处理程序中。
google.maps.event.addListener(map, 'zoom_changed', function() {
// your zoom logic goes here
var zoom = map.getZoom();
if (zoom < 10) {
// do something
} else {
// do something else
}
});
我将把练习的其余部分留给您—但是您可能需要将每个标记添加到标记数组中,并迭代这些标记以有条件地打开/关闭它们。给你一个提示——你可以给标记对象添加额外的属性,以便在循环时检查。例如,您可以添加一个标记。LessThan10 = true;到标记对象。然后,在循环时,您可以在上面查找此属性并调用marker.setVisible();适用。
建议您通过http://www.jslint.com/运行您的代码-有几个语法错误(主要是跟踪;
,不需要在那里)。
response
从何而来?这是代码中唯一引用它的地方:
var j = eval('(' + response + ')');
不要在初始化函数中嵌套createMarker函数。使其独立,并将创建标记及其信息窗口所需的数据作为参数传递给该函数。
相关文章:
- 如何在elfinder插件(一个文件管理器插件)上获得上传前事件
- 如何访问声音管理器2创建的声音对象
- JS编译器/包管理器,用于版本控制
- Modx数据包管理器ext-all.js错误
- 根据单个用户的决定禁用谷歌标签管理器(选择退出)
- jquery在通过谷歌标签管理器交付时点击不工作
- 删除$fromtataLayertotal-google标签管理器
- 资源管理器9上的html5视频缓存
- 如何在 elfinder(一个 jquery 文件管理器插件)中只显示文件夹列表
- 在全局声音管理器对象上完成
- Web 驱动程序管理器更新错误:EACCES,权限被拒绝
- 声音管理器2 - 停止声音时失真
- 谷歌跟踪代码管理器使用什么模式来观察 de 'dataLayer' 数组
- 为什么谷歌跟踪代码管理器不能安装在正文下的另一个HTML元素中
- Connect资产管理器文件与req.url不匹配
- 谷歌标签管理器点击事件没有冒泡到家长
- 加载两个脚本块(使用lab.js作为加载管理器)
- 错误管理器:从标准Java到Servlet
- 谷歌地图API v3绘图管理器-地图不渲染
- 如何获得用户's在wso2api管理器中的配置文件