array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 谷歌地图接口,实现导航功能。 - 爱码网
bin-pureLife

2015年第一篇博客;

谷歌地图接口:

Google Directions API

demo code:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<title>Google Maps get Around</title>
<script src="./tpl/Home/vifnn/common/js/jquery-1.8.3.min.js"></script>

<script type="text/javascript" src="http://maps.google.com/maps/api/js?libraries=geometry&sensor=false"></script>
<script type="text/javascript">
var infowindow,marker,marker_start,marker_end,info_start,info_end;
var geocoder = new google.maps.Geocoder();
var point,map;
var colorArray = new Array(
        \'#FF0000\',\'#FF00FF\',\'#D15FEE\',\'#B03060\',
        \'#00CD00\',\'#0F0F0F\',\'#1E90FF\',\'#66CDAA\',
        \'#87CEFF\',\'#7D9EC0\',\'#8B7B8B\',\'#CD2990\',
        \'#BDB76B\',\'#BC8F8F\',\'#BF3EFF\',\'#BC8F8F\',
        \'#B4EEB4\',\'#AB82FF\',\'#A52A2A\',\'#8E388E\',
        \'#8B8B00\',\'#98F5FF\',\'#CD3333\',\'#EE2C2C\'
);
var arr_map = new Array();
function initialize() {
    //var point = new google.maps.LatLng(18.252847, 109.511909);

    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(function(position) {
            point = new google.maps.LatLng(
                    position.coords.latitude,
                    position.coords.longitude
            );
            loadMap(point);
        });
    } else {
        // Browser doesn\'t support Geolocation
        handleNoGeolocation();
    }

}
function loadMap(point){
    var myOptions = {
        zoom: 13, 
        center: point,
        mapTypeId: google.maps.MapTypeId.ROADMAP,
        mapTypeControl: false, 
        overviewMapControl: false, 
        scaleControl: false, 
        streetViewControl: false 
    };
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    marker = new google.maps.Marker({
        position: point,
        map: map
    });
    marker.setDraggable(true); 
    infowindow = new google.maps.InfoWindow({
        content: "",
        size: new google.maps.Size(50,50)
    });
    google.maps.event.addListener(marker, \'dragend\', function(){
        showAddress(map, marker);
    });

    google.maps.event.addListener(marker, \'click\', function(){
        showAddress(map, marker);
    });

    google.maps.event.addListener(map, \'click\', function(e) {
        clickMou(map,marker,e.latLng);
    });

    showAddress(map,marker);
}

function handleNoGeolocation() {
    point = new google.maps.LatLng(28.127907999999998, 112.98059999999998);
    loadMap(point);
}

function makeInfo(obj,latlng){
    var address = obj[1].formatted_address + "<br />";
    address = obj[0].formatted_address + "<br />";
    address += "纬度:" + latlng.lat() + "<br />";
    address += "经度:" + latlng.lng();
    infowindow.setContent(address);
    infowindow.open(map, marker);
}
function showAddress(map, marker)
{
    var latlng = marker.getPosition();
    geocoder = new google.maps.Geocoder();
geocoder.geocode({\'latLng\': latlng}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { makeInfo(results,latlng) } } else { alert("Geocoder failed due to: " + status); } }); } function clickMou(map, marker,location) { marker.setPosition(location) geocoder.geocode({\'latLng\': location}, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { if (results[1]) { makeInfo(results,latlng) } } else { alert("Geocoder failed due to: " + status); } }); } function initializeMarksAndInfo(){ info_start = new google.maps.InfoWindow({ content: "", size: new google.maps.Size(50,50) }); info_end = new google.maps.InfoWindow({ content: "", size: new google.maps.Size(50,50) }); } function markAndInfo(point,content,parm){ if(parm == 1){ if(marker_start == undefined){ marker_start = new google.maps.Marker({ position: point, map: map }); }else{ marker_start.setPosition(point); } info_start.setContent(content); info_start.open(map, marker_start); }else{ if(marker_end == undefined){ marker_end = new google.maps.Marker({ position: point, map: map }); }else{ marker_end.setPosition(point) } info_end.setContent(content); info_end.open(map, marker_end); } } $(function(){ modeToSelect(\'driving\'); initializeMarksAndInfo(); $("#typeway").change(function(){ $mode = $(this).val() modeToSelect($mode); }) $("button").click(function(){ $("#div_json").empty(); $("#disc_desc").empty(); $mode = $("#typeway").val(); $json = getJson($mode); $.get("/index.php?g=Home&m=Map&a=getDirection&r=" + Math.random(),$json , function(data, textStatus) { //$("#div_json").text(data); $obj = eval("("+data+")"); if(arr_map.length > 0){ for(var m = 0; m < arr_map.length; m++){ arr_map[m].setMap(null); } arr_map.splice(0,arr_map.length); } if($obj.status == "OK"){ for(var j = 0; j <$obj.routes.length;j++ ){ $data_array = $obj.routes[j].legs[0]; $point_start = new google.maps.LatLng($data_array.start_location.lat,$data_array.start_location.lng); $point_end = new google.maps.LatLng($data_array.end_location.lat,$data_array.end_location.lng); $address_start = $data_array.start_address + "<br />"; $address_start += "纬度:" + $data_array.start_location.lat + "<br />"; $address_start += "经度:" + $data_array.start_location.lng; $address_end = $data_array.end_address + "<br />"; $address_end += "纬度:" + $data_array.end_location.lat+ "<br />"; $address_end += "经度:" + $data_array.end_location.lng; markAndInfo($point_start,$address_start,1); markAndInfo($point_end,$address_end,2); $("#div_json").append(\'<div>方案\'+(j+1)+\':\'+$obj.routes[j].summary+\'全程\'+$data_array.distance.text+\',大约耗时\'+$data_array.duration.text+"</div>"); $data_steps = $data_array.steps; if($mode == \'transit\'){ for(var i =0; i< $data_steps.length;i++){ $temp = $data_steps[i]; $("#div_json").append("<div>step"+(j+1)+"_"+(i+1)+":"+$temp.html_instructions+""+$temp.distance.text+"耗时"+$temp.duration.text+"</div>"); if($temp.travel_mode == \'WALKING\'){ $temp_arr = $temp[\'steps\']; if($temp_arr.length > 1){ for(var i_i = 0; i_i < $temp_arr.length; i_i++){ $temp = $temp_arr[i_i]; $("#div_json").append("<div>step"+(j+1)+"_"+(i+1)+"_"+(i_i+1)+":"+$temp.html_instructions+""+$temp.distance.text+"耗时"+$temp.duration.text+"</div>"); } } }else{
$temp = $temp.transit_details; $("#div_json").append("<div>"+$temp.line.short_name+"--"+($temp.headway)/60+"/趟</div>"); $("#div_json").append("<div>"+$temp.departure_stop.name+"--"+$temp.arrival_stop.name+"--共"+$temp.num_stops+"站</div>"); } } }else{ for(var i =0; i< $data_steps.length;i++){ $temp = $data_steps[i]; $("#div_json").append("<div>step"+(j+1)+"_"+(i+1)+":"+$temp.html_instructions+""+$temp.distance.text+"耗时"+$temp.duration.text+"</div>"); } } /*var marker_new = new google.maps.Marker({ position: $obj.routes[0].overview_polyline.points, map: map });*/ var encodedPoints = $obj.routes[j].overview_polyline.points; var decodedPoints = google.maps.geometry.encoding.decodePath(encodedPoints) ; arr_map[j] = new google.maps.Polyline ( { strokeColor: colorArray[j] , strokeOpacity: 1.0 , strokeWeight: 2 , path: decodedPoints , clickable: false }) arr_map[j].setMap(map) } }else{ alert(\'没有找到路线\') } }); }); }) function getJson(type){ $start = $("#start").val(); $end = $("#end").val(); $json = {\'start\':$start,\'end\':$end,\'type\':type}; if(type != "transit"){ $json.alternatives = $("#alternatives").val(); $json.avoid = $(\':radio[name="avoid"]:checked\').val(); }else{ $json.start_time = $("#start_time").val(); $json.end_time = $("#end_time").val(); } return $json; } function modeToSelect(type){ var html_first = \'<option value="false" selected>单路线查询<option value="true">多线路查询\'; var html_second = \'<input type="radio" name="avoid" value= "highways" >避开高速公路<input type="radio" name="avoid" value= "tolls">避开收费公路/桥梁\'; var html_third = \'<input type="radio" name="avoid" value= "highways" >观光路线\'; var html_forth; $("#alternatives").empty(); $("#alternatives").hide() $("#avoid").empty(); $("#avoid").hide() $("#start_time").empty(); $("#start_time").hide() $("#end_time").empty(); $("#end_time").hide() $("#bus_desc").hide(); switch (type){ case "driving": $("#alternatives").append(html_first); $("#alternatives").fadeIn(); $("#avoid").append(html_second); $("#avoid").fadeIn(); break; case "bicycling": $("#alternatives").append(html_first); $("#alternatives").fadeIn(); $("#avoid").append(html_third); $("#avoid").fadeIn(); break; case "transit": for(var i = 0; i<24; i++){ if(i >=10){ html_forth += \'<option value="\'+i+\':00:00">\'+i+\':00:00\'; html_forth += \'<option value="\'+i+\':30:00">\'+i+\':30:00\'; }else{ //09:42:22 if(i == 6){ html_forth += \'<option value="0\'+i+\':00:00" selected>0\'+i+\':00:00\'; }else{ html_forth += \'<option value="0\'+i+\':00:00">0\'+i+\':00:00\'; } html_forth += \'<option value="0\'+i+\':30:00">0\'+i+\':30:00\'; } } $("#start_time").append(html_forth); $("#start_time").fadeIn(); $("#end_time").append(html_forth); $("#end_time").fadeIn(); $("#bus_desc").fadeIn(); break; case "walking": $("#alternatives").append(html_first); $("#alternatives").fadeIn(); $("#avoid").append(html_third); $("#avoid").fadeIn(); break; default: return; } } </script> </head> <body onload="initialize()"> <select id="typeway" style="width: 30%;" > <option value="driving" selected>驾车 <option value="bicycling">骑行 <option value="walking">步行 <option value="transit">公交 </select> <select id = \'alternatives\' style = "display:none"> </select> <span style="display: none" id = "avoid"> </span> <span id = "bus_desc" style="display: none">公交车运行时间:</span> <select id = \'start_time\' style = "display: none"> </select> <select id = \'end_time\' style = "display: none"> </select> 输入起点位置:<input type = "text" name = "start" id = "start"value = "长沙 火车站" > 输入目的地:<input type = "text" name = "end" id = "end" value = "长沙 火车南站" > <button>搜路线</button> <div id="map_canvas" style="width: 100%; height: 800px"></div> <div id = "div_json"></div> </body> </html>

效果图:

 

 

分类:

技术点:

相关文章: