//创建一个实例 var districtExplorer = window.districtExplorer ; /** * rgb转16进制 * @param r * @param g * @param b * @returns {string} * @constructor */ function RGBToHex(r, g, b) { var hex = "#" + ((1 << 24) | (r << 16) | (g << 8) | b).toString(16).slice(1); return hex; } // 颜色辅助方法 var colors = []; var num = 0; while(num < 20){ var gb = Math.random() * 155 + 50; colors.push(RGBToHex(gb,gb,255)); num++; } AMapUI.load(['ui/geo/DistrictExplorer', 'lib/$'], function(DistrictExplorer, $) { //创建一个实例 districtExplorer = window.districtExplorer = new DistrictExplorer({ eventSupport: true, //打开事件支持 map: map }); //监听feature的hover事件 districtExplorer.on('featureMouseout featureMouseover', function(e, feature) { toggleHoverFeature(feature, e.type === 'featureMouseover', e.originalEvent ? e.originalEvent.lnglat : null); }); //监听鼠标在feature上滑动 districtExplorer.on('featureMousemove', function(e, feature) { //更新提示位置 tipMarker.setPosition(e.originalEvent.lnglat); }); //feature被点击 districtExplorer.on('featureClick', function(e, feature) { var props = feature.properties; //如果存在子节点 // if (props.childrenNum > 0) { //切换聚焦区域 //switch2AreaNode(props.adcode); renderAreas(props.adcode); // } }); //外部区域被点击 districtExplorer.on('outsideClick', function(e) { districtExplorer.locatePosition(e.originalEvent.lnglat, function(error, routeFeatures) { if (routeFeatures && routeFeatures.length > 1) { //切换到省级区域 // switch2AreaNode(routeFeatures[1].properties.adcode); renderAreas(routeFeatures[1].properties.adcode); } else { //切换到全国 switch2AreaNode(610000); } }, { levelLimit: 2 }); }); }); //当前聚焦的区域 var currentAreaNode = null; //鼠标hover提示内容 var $tipMarkerContent = $('
'); var tipMarker = new AMap.Marker({ content: $tipMarkerContent.get(0), offset: new AMap.Pixel(0, 0), bubble: true }); //根据Hover状态设置相关样式 function toggleHoverFeature(feature, isHover, position) { tipMarker.setMap(isHover ? map : null); if (!feature) { return; } var props = feature.properties; if (isHover) { //更新提示内容 $tipMarkerContent.html("   " + props.name); //更新位置 tipMarker.setPosition(position || props.center); } $('#area-tree').find('h2[data-adcode="' + props.adcode + '"]').toggleClass('hover', isHover); //更新相关多边形的样式 var polys = districtExplorer.findFeaturePolygonsByAdcode(props.adcode); for (var i = 0, len = polys.length; i < len; i++) { polys[i].setOptions({ fillOpacity: isHover ? 0.5 : 0.35 }); } } //绘制区域面板的节点 function renderAreaPanelNode(ele, props, color) { var $box = $('
  • ').addClass('lv_' + props.level); var $h2 = $('

    ').addClass('lv_' + props.level).attr({ 'data-adcode': props.adcode, 'data-level': props.level, 'data-children-num': props.childrenNum || void(0), 'data-center': props.center.join(',') }).html(props.name).appendTo($box); if (color) { $h2.css('borderColor', color); } //如果存在子节点 if (props.childrenNum > 0) { //显示隐藏 $('
    ').appendTo($box); //子区域列表 $('