ammap使用破解

公司最近的项目上需要一个能在地图上显示各个基地的功能,首先想到的是用类似google baidu的地图api的方案,被老总以不够炫为由给否了。
 
    以前在项目中用过amchart,记得有一个孪生兄弟 ammap。基于对amchart的良好印象,遂决定用ammap。

   以下是部分代码

Js代码 复制代码
  1. <script type="text/javascript">   
  2.         var w=$("#rbody").width();   
  3.         var so = new SWFObject("${pageContext.request.contextPath}/static/chart/ammap.swf""ammap", w, "600""8""#e5f5fd");   
  4.             so.addVariable("path""${pageContext.request.contextPath}/static/chart/");   
  5.             so.addVariable("settings_file", escape("${pageContext.request.contextPath}/static/chart/countries.xml"));   
  6.             so.addVariable("data_file", escape("${pageContext.request.contextPath}/plan/createamMapXml"));   
  7.             so.write("flashcontent");    
  8. lt;/script>  

关键读取数据是createamMapXml这个方法


Java代码 复制代码
  1. String createamMapXml(HttpServletRequest request, HttpServletResponse response)   
  2.             throws Exception {   
  3.         SAXBuilder sb = new SAXBuilder();   
  4.         InputStream input = Thread.currentThread().getContextClassLoader()   
  5.                 .getResourceAsStream("china.xml");   
  6.         Document doc = sb.build(input);   
  7.         String contextPath=request.getContextPath();   
  8.         Element map = doc.getRootElement();   
  9.         Element movies = new Element("movies");   
  10.         marketPriceService.createMap(contextPath, map, movies);   
  11.         String xmlStr = formatXml(doc);   
  12. //      System.out.println(xmlStr);   
  13.         response.setContentType("text/xml");   
  14.         return xmlStr;   
  15. }  
String createamMapXml(HttpServletRequest request, HttpServletResponse response)
			throws Exception {
		SAXBuilder sb = new SAXBuilder();
		InputStream input = Thread.currentThread().getContextClassLoader()
				.getResourceAsStream("china.xml");
		Document doc = sb.build(input);
		String contextPath=request.getContextPath();
		Element map = doc.getRootElement();
		Element movies = new Element("movies");
		marketPriceService.createMap(contextPath, map, movies);
		String xmlStr = formatXml(doc);
//		System.out.println(xmlStr);
		response.setContentType("text/xml");
		return xmlStr;
}

Java代码 复制代码
  1. public void createMap(String contextPath, Element map, Element movies) {   
  2.         List<Bases> list = basesService.getBasesByCurrentStateAndBases(0);   
  3.         Element areas=map.getChild("areas");   
  4.         List areaList=areas.getChildren("area");   
  5.         for (Iterator<Bases> iterator = list.iterator(); iterator.hasNext();) {   
  6.             Bases bases = (Bases) iterator.next();   
  7. //          System.out.println(bases.getRegion().getState());   
  8.             Element movie = new Element("movie");   
  9.             movie.setAttribute("title", bases.getName()==null?"": bases.getName());   
  10.             movie.setAttribute("file""target");   
  11.             movie.setAttribute("color""#FFBB77");   
  12.             movie.setAttribute("width""10");   
  13.             movie.setAttribute("height""10");   
  14.                
  15.             movie.setAttribute("long", String.valueOf(bases.getLongitude()));   
  16.             movie.setAttribute("lat", String.valueOf(bases.getLatitude()));   
  17.             movie.setAttribute("url",    
  18.                     contextPath+ "/plan/planBaseQuery?baseId=" + bases.getId());   
  19.             movie.setAttribute("fixed_size""true");    
  20.             movies.addContent(movie);   
  21.             for (Iterator iterator2 = areaList.iterator(); iterator2.hasNext();) {   
  22.                 Element area = (Element) iterator2.next();   
  23.                 String title=area.getAttribute("title").getValue();   
  24.                 if(StringUtils.isNotBlank(title)&&bases.getRegion().getState().contains(area.getAttribute("title").getValue()))   
  25.                     area.setAttribute("color","#55AA00");   
  26.             }   
  27.         }   
  28.         Element movie = new Element("movie");   
  29.         movie.setAttribute("title","北京");   
  30.         movie.setAttribute("file""star.gif");   
  31.         movie.setAttribute("color""#CC0000");   
  32.         movie.setAttribute("width""15");   
  33.         movie.setAttribute("height""15");   
  34.         movie.setAttribute("long""116.235004");   
  35.         movie.setAttribute("lat""40.4850468229644");    
  36.         movie.setAttribute("fixed_size""true");    
  37.         movies.addContent(movie);   
  38.         map.addContent(movies);   
  39.     }  
public void createMap(String contextPath, Element map, Element movies) {
		List<Bases> list = basesService.getBasesByCurrentStateAndBases(0);
		Element areas=map.getChild("areas");
		List areaList=areas.getChildren("area");
		for (Iterator<Bases> iterator = list.iterator(); iterator.hasNext();) {
			Bases bases = (Bases) iterator.next();
//			System.out.println(bases.getRegion().getState());
			Element movie = new Element("movie");
			movie.setAttribute("title", bases.getName()==null?"": bases.getName());
			movie.setAttribute("file", "target");
			movie.setAttribute("color", "#FFBB77");
			movie.setAttribute("width", "10");
			movie.setAttribute("height", "10");
			
			movie.setAttribute("long", String.valueOf(bases.getLongitude()));
			movie.setAttribute("lat", String.valueOf(bases.getLatitude()));
			movie.setAttribute("url", 
					contextPath+ "/plan/planBaseQuery?baseId=" + bases.getId());
			movie.setAttribute("fixed_size", "true"); 
			movies.addContent(movie);
			for (Iterator iterator2 = areaList.iterator(); iterator2.hasNext();) {
				Element area = (Element) iterator2.next();
				String title=area.getAttribute("title").getValue();
				if(StringUtils.isNotBlank(title)&&bases.getRegion().getState().contains(area.getAttribute("title").getValue()))
					area.setAttribute("color","#55AA00");
			}
		}
		Element movie = new Element("movie");
		movie.setAttribute("title","北京");
		movie.setAttribute("file", "star.gif");
		movie.setAttribute("color", "#CC0000");
		movie.setAttribute("width", "15");
		movie.setAttribute("height", "15");
		movie.setAttribute("long", "116.235004");
		movie.setAttribute("lat", "40.4850468229644"); 
		movie.setAttribute("fixed_size", "true"); 
		movies.addContent(movie);
		map.addContent(movies);
	}

china.xml

到这里功能基本完成。。。

由于ammap和amchart一样是
This  software is free under a linkware license
存在一个ammap的logo链接

网上找了一下破解方法。。竟然没有现成的。只好自己动手 反编译amamp.swf


找到一个方法
function checkKey(serial)
{
    serial = com.ammap.Utils.stripSymbols(serial, " ");
    serial = com.ammap.Utils.stripSymbols(serial, "\n");
    serial = com.ammap.Utils.stripSymbols(serial, "\r");
    serial = com.ammap.Utils.stripSymbols(serial, "\r\n");
    arr = serial.split("-");
    if ((Number(arr[2]) + Number(arr[3]) == 8501 || Number(arr[2]) + Number(arr[3]) == 8801 || Number(arr[2]) + Number(arr[3]) == 8941) 
    && Number(arr[2].substr(1, 1)) - Number(arr[3].substr(2, 1)) == 5 
    || _url.split("/")[2].substr(-9) == "ammap.com")
    {
    }
    else
    {
        attachMovie("copyright_mc", "copyright_mc", 10001);
    } // end else if
} // End of the function

及这句话
if (key == undefined)
{
    key_loader.loadVars(path + "ammap_key.txt", this, "checkKey", false, "checkKey");
}


这也太容易破解了
在ammap所处的文件夹中新建一个ammap_key.txt文件
文件内容为
破-解-4960-3541-中国-lele

到此 大功告成!~~~
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值