标签:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> body, html,#allmap {width: 100%;height: 100%;overflow: hidden;margin:0;font-family:"微软雅黑";} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=shmFW60npXiuwVtfXAUNS9AR"></script> <script type="text/javascript" src="http://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script> <title>文本标注</title> </head> <body> <div id="allmap"></div> </body> </html> <script type="text/javascript"> // 百度地图API功能 var map = new BMap.Map("allmap"); $(document).ready(function(){ $.getJSON("/cgi-bin/oalogin_read.cgi",function(result){ $.each(result, function(i, field){ if(typeof(field.address)=="undefined"){ return; } var point = new BMap.Point(field.point.x,field.point.y); var opts = { position : point, // 指定文本标注所在的地理位置 offset : new BMap.Size(30, -30) //设置文本偏移量 } addr_array=field.address.split("|"); address=addr_array[1]+"-"+addr_array[2]; var label = new BMap.Label(address, opts); // 创建文本标注对象 label.setStyle({ color : "red", fontSize : "12px", height : "20px", lineHeight : "20px", fontFamily:"微软雅黑" }); map.addOverlay(label); var center_point = new BMap.Point(108.95309828,34.27779990); map.centerAndZoom(center_point, 5); // alert(field.address); return; }); }); }); </script>效果图展示:
<!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <style type="text/css"> body, html {width: 100%;height: 100%;margin:0;font-family:"微软雅黑";} #allmap{width:100%;height:500px;} p{margin-left:5px; font-size:14px;} </style> <script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=shmFW60npXiuwVtfXAUNS9AR"></script> <script src="http://libs.baidu.com/jquery/1.9.0/jquery.js"></script> <title>给多个点添加信息窗口</title> </head> <body> <div id="allmap"></div> <p>点击标注点,可查看由纯文本构成的简单型信息窗口</p> </body> </html> <script type="text/javascript"> $(document).ready(function(){ // 百度地图API功能 map = new BMap.Map("allmap"); map.centerAndZoom(new BMap.Point(108.95309828,34.27779990), 5); var data_info = new Array(); $.getJSON("/cgi-bin/oalogin_read.cgi",function(result){ $.each(result, function(i, field){ if(typeof(field.address)=="undefined"){ return; } addr_array=field.address.split("|"); address=addr_array[1]+"-"+addr_array[2]; data_info.push([field.point.x,field.point.y,address]) }); var opts = { width : 250, // 信息窗口宽度 height: 80, // 信息窗口高度 title : "信息窗口" , // 信息窗口标题 enableMessage:true//设置允许信息窗发送短息 }; for(var i=0;i<data_info.length;i++){ var marker = new BMap.Marker(new BMap.Point(data_info[i][0],data_info[i][1])); // 创建标注 var content = data_info[i][2]; map.addOverlay(marker); // 将标注添加到地图中 addClickHandler(content,marker); } function addClickHandler(content,marker){ marker.addEventListener("click",function(e){ openInfo(content,e)} ); } function openInfo(content,e){ var p = e.target; var point = new BMap.Point(p.getPosition().lng, p.getPosition().lat); var infoWindow = new BMap.InfoWindow(content,opts); // 创建信息窗口对象 map.openInfoWindow(infoWindow,point); //开启信息窗口 } }); }); </script>效果图展示:
服务器端,采用cgi方式,数据json格式数据放到apache的cgi目录:
/var/www/html/cgin-bin/oalogin_read.cgi
httpd.conf配置文件增加选项:AddHandler cgi-script .cgi
更改权限:
chown apache.apache oalogin_read.cgi
chmod u+x oalogin.read.cgi
#!/usr/bin/env python # -*- coding: utf-8 -*- import pickle import urllib import urllib2 import json # # 根据ip地址从百度地图api返回位置,地址等信息 def getInfoByIP(ip): ak="shmFW60npXiuwVtfXAUNS9AR" url="http://api.map.baidu.com/location/ip?ak="+ak+"&ip="+ip+"&coor=bd09ll" #为urllib2 设置代理 proxy=urllib2.ProxyHandler({‘http‘: ‘http://10.10.61.4:3128‘}) opener= urllib2.build_opener(proxy) urllib2.install_opener(opener) req = urllib2.Request(url) res_data = urllib2.urlopen(req) res = res_data.read() json_data = json.loads(res) item={} if json_data.has_key(‘address‘) and json_data.has_key(‘content‘): # print json_data[‘address‘].encode(‘utf-8‘).decode(‘utf-8‘),json_data[‘content‘][‘point‘] item[‘address‘]=json_data[‘address‘] item[‘point‘]=json_data[‘content‘][‘point‘] return item 输出json格式数据 def jsonResponse(result_json): import cgi import cgitb cgitb.enable() print "Content-type:application/json" print #cgi.print_environ() print result_json if __name__ == "__main__": #从login.pk 文件中读取ip地址信息 login_db = open(‘/var/www/cgi-bin/login.pk‘,‘r‘) login_data = pickle.load(login_db) login_ips={} for item in login_data: # print item[0].decode(‘utf8‘),item[1:] ip = item[-1].strip() if login_ips.has_key(ip): login_ips[ip]+=1 else: login_ips[ip]=1 #print login_ips #循环获取ip地址的详细信息 map_data_json=[] for ip in login_ips.keys(): ip_data = getInfoByIP(ip) map_data_json.append(ip_data) encodejson=json.dumps(map_data_json) jsonResponse(encodejson)
标签:
原文地址:http://my.oschina.net/zhailibao2010/blog/508187