地圖 ajax-資料庫

来源:http://www.cnblogs.com/lqqchangeload/archive/2016/10/29/6011463.html
-Advertisement-
Play Games

通過資料庫和ajax方法寫出地圖 客戶端部分:html、js、css代碼部分: 服務端部分:app.js(一個JavaScript): 資料庫mysql信息: 最終結果: ...


通過資料庫和ajax方法寫出地圖

客戶端部分:html、js、css代碼部分:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
        "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
    <title></title>
    <meta charset="UTF-8"/>
</head>
<!--css樣式部分-->
<style type="text/css">
    .content_map{
        /*border:1px solid blue;*/
        width:1349px;
        height:524px;
        float:left;
        margin-top:100px;
    }
    .content_map .mLeft{
        border:none;
        border-top:1px solid #fb6c20;
        width:400px;
        margin-top:14px;
        float:left;
        margin-left:134px;
    }
    .content_map>span{
        margin-left:20px;
        margin-right:20px;
        font-size:28px;
        font-family: "Microsoft Yahei";
        /*font-weight: bold;*/
        float:left;
    }
    .content_map .mRight{
        float:left;
        border:none;
        border-top:1px solid #fb6c20;
        width:400px;
        margin-top:14px;
    }
    #maplist{
        margin-top:50px;
        width:749px;
        height:524px;
        /*border:1px solid #fb6c20;*/
        background: url("images/diru.png") no-repeat 0 0 ;
        background-size:contain;
        position: relative;
        float:left;
    }
    .mapShop img{
        position:absolute;
        /*border:1px solid red;*/
    }
    #map_right{
        /*border:1px solid #fb6c20;*/
        float:left;
        /*width:600px;*/
        width:594px;
        height:524px;
        background-color: #f0f2fe;
        margin-top: 40px;
    }
    .shopMsg img{
        width:450px;
        height:300px;
        margin-left:72px;
        margin-top:40px;
    }
    .shopMsg .pmname{
        color:#000;
        font-size:20px;
        margin-top:30px;
        margin-left:72px;
        font-family:微軟雅黑;
    }
    .shopMsg .address{
        color:#000;
        font-size:20px;
        margin-top:30px;
        margin-left:72px;
        font-family:微軟雅黑;
    }
    .shopMsg .phone{
        color:#000;
        font-size:20px;
        margin-top:30px;
        margin-left:72px;
        font-family:微軟雅黑;
    }
</style>
<body>
<!--html部分-->
<div class="content_map">
    <!-- 標題-->
    <hr class="mLeft"/>
    <span>相關寵物醫院</span>
    <hr class="mRight"/>
    <!-- 左邊部分:地圖-->
    <div id="maplist">
    </div>
    <!-- 右邊部分點擊左邊要添加的內容:以及最開始加入的信息-->
    <div id="map_right">
        <div class="shopMsg">
            <img src="images/w_map.png"/>
            <div class="pmname">寵物店名:Petjoy寵物社區</div>
            <div class="address">地址:長寧區機旋路1258號--1260號</div>
            <div class="phone">電話號碼:(021)53018000</div>
        </div>
    </div>
</div>
<!--js代碼部分-->
<script type="text/javascript">
    window.onload=function(){
        getMap();
    }
//    向地圖添加信息:ajax
    function getMap(){
        //創建對象
        var httpReq;
        if(window.XMLHttpRequest){
            httpReq=new XMLHttpRequest();
        }else{
            httpReq=new ActiveXObject("Microsoft.XMLHTTP");
        }
        var maplist=document.getElementById("maplist");//獲取地圖列表
        maplist.innerHTML='';//清空地圖裡在html裡面加的信息
        //  定義回調函數,接收從資料庫響應回來的數據。
        // onreadystatechange():存儲函數(或函數名)。每當readyState屬性改變時,就會調用該函數
        httpReq.onreadystatechange=function(){
            if(httpReq.readyState==4&&httpReq.status==200){
                var jsonobj=JSON.parse(httpReq.responseText);
                console.log(jsonobj.length);
                for (var i = 0; i< jsonobj.length;i++) {
                    maplist.innerHTML+='<div class="mapShop">'+
                    '<img  src="images/fi1.png" style="top:'+jsonobj[i].pmTop+"px"+';left:'+jsonobj[i].pmLeft+"px"+'"/>'+
                    '<div id="pmcity'+i+'" onclick="getMessage('+i+')" style="top:'+jsonobj[i].pmTop+"px"+';left:'+jsonobj[i].pmLeft+"px"+';position:absolute;padding-top:20px;'+'">' + jsonobj[i].pmCity + '</div>'+
                    '</div>';
                }
            }
        }
        //發起請求(打開一個地址)
        httpReq.open("get", "adress.do", true);
        //發送,如果提交方式為get,發送為null;如果提交方式為post,哪send里寫要發送的參數,沒得的話,就寫null
        httpReq.send(null);
    }
    //點擊獲取信息
    function getMessage(a){
        console.log("M----------1");
        var httpReq;
        if(window.XMLHttpRequest){
            httpReq=new XMLHttpRequest();
        }else{
            httpReq=new ActiveXObject("Microsoft.XMLHTTP");
        }
        var map_right=document.getElementById("map_right");
        map_right.innerHTML='';
        httpReq.onreadystatechange=function(){
            if(httpReq.readyState==4&&httpReq.status==200){
                var jsonobj=JSON.parse(httpReq.responseText);
                console.log(jsonobj.length);
                for(var i=0;i<jsonobj.length;i++){
                    map_right.innerHTML+='<div class="shopMsg">'+
                    '<img src="images/'+jsonobj[i].pmImg+'"/>'+
                    '<div class="pmname">寵物店名:'+jsonobj[i].pmName+'</div>'+
                    '<div class="address">地址:'+jsonobj[i].pmAddress+'</div>'+
                    '<div class="phone">電話號碼:'+jsonobj[i].pmPhone+'</div>'+
                    '</div>'
                }
            }
        }
        //發起請求
        httpReq.open("get", "adressMsg.do?pmId="+a, true);
        //發送
        httpReq.send(null);
    }
</script>
</body>
</html>

服務端部分:app.js(一個JavaScript):

var express=require("express");//引用express
var mysql=require("mysql");//引用mysql
var app=express();//執行express里的全局函數,返回一個express對象
app.configure(function(){
    app.use(app.router);//路由,配置路由時,先執行,用戶定義的攔截地址
    app.use(express.static(__dirname+"/public"));//設置靜態資源路徑
    app.use(express.errorHandler());//開發者模塊,將錯誤顯示在html上
});
app.get("/adress.do",function(req,res){
    //console.log("d-----------1");
    //建立資料庫連接,建立橋梁
    var myconn=mysql.createConnection({
        host:"localhost",
        port:"3306",
        user:"root",
        password:"123456",
        database:"pet"
    });
    //打開連接
    myconn.connect();
    var sql="SELECT * FROM petmap";
    //console.log(sql);
    myconn.query(sql,[],function(err,data){
        //console.log(err);
        //console.log(data);
        res.send(data);
    });
    //關閉連接
    myconn.end();
});
//城市點擊響應
app.get("/adressMsg.do",function(req,res){
    var pmId=req.query.pmId;
    console.log(pmId);
    //建立資料庫連接,建立橋梁
    var myconn=mysql.createConnection({
        host:"localhost",
        port:"3306",
        user:"root",
        password:"123456",
        database:"pet"
    });
    //打開連接
    myconn.connect();
    console.log("f------------1");
    var sql="SELECT * FROM petmap WHERE pmId=?";
    console.log(sql);
    var id=parseInt(pmId);
    myconn.query(sql,[id+1],function(err,data){
        console.log(err);
        console.log(data);
        res.send(data);
    });
    //關閉連接
    myconn.end();
});
//監聽埠號
app.listen(8888,function(){//監聽
    console.log("express監聽成功!");
    console.log(__dirname);
});

資料庫mysql信息:

/*創建資料庫:pet*/
CREATE DATABASE pet;
/*寵物店地圖*/
CREATE TABLE petmap(/*寵物店*/
pmId INT AUTO_INCREMENT PRIMARY KEY,/*寵物店id*/
pmName NVARCHAR(60),/*寵物店名*/
pmCity NVARCHAR(20),/*寵物店所在城市*/
pmAddress NVARCHAR(100),/*寵物店所在詳細地址*/
pmImg VARCHAR(60),/*寵物店圖片*/
pmPhone VARCHAR(30),/*寵物店電話號碼*/
pmTop FLOAT,/*寵物店位置上面*/
pmLeft FLOAT/*寵物店位置下麵*/
)
/*插入信息*/
INSERT INTO petmap(pmName,pmCity,pmAddress,pmImg,pmPhone,pmTop,pmLeft) 
VALUES ('邛崍邛臨美多寵物服務部','成都','成都市邛崍市長松路296號','map1.png','15202891690',360,320),
 ('諧和寵物醫院','德陽','德陽市旌陽區珠江西路300號','map2.png','0838-6181255',320,350),
  ('天寧動物醫院','西安','西安市新城區韓森路','map3.png','028-81836050',260,240),
('寵美康動物醫院','烏魯木齊','烏魯木齊市天山區幸福路774號','map4.png','0991-2654158',210,170),
('綿陽康貝動物診所','綿陽','綿陽市游仙區東津路5-2號','map5.png','0816-2987186',315,335),
('聖心動物醫院','重慶','重慶市九龍坡區大公館九龍大廈3-2','map6.png','023-68820999',360,380),
('吉祥寵物醫院(油榨街店)','貴陽','貴陽市南明區油榨街花鳥市場寵物區','map7.png','0851-88275946',400,380),
('常德市武陵區動物醫院','常德','常德市武陵區青年路478號','map8.png','0736-7236814',230,393),
('愛爾寵物','鄭州','鄭州市金水區金水東路3-6號','map9.png','0371-69193157',300,453),
('長沙市博旺寵物診所','長沙','長沙市天心區西牌樓街41號附近','map10.png','0731-82329801',370,443),
('大嘴狗寵物醫院','合肥','合肥市廬陽區北一環與肥西路交口向南','map11.png','0551-64286773',330,500),
('秦皇島市寵物醫院','秦皇島','秦皇島市海港區海陽路9號','map12.png','0335-3076769',165,540);
INSERT INTO petmap(pmName,pmCity,pmAddress,pmImg,pmPhone,pmTop,pmLeft) 
VALUES ('乖乖寵寵物醫院','天津','天津市河東區萬東路77號(近8630醫院)','map13.png','13820105131',195,510),
('北京寵物醫院','北京','北京市西城區百萬莊北里14號','map14.png','010-88377484',198,490),
('愛寵之家寵物醫院','哈爾濱','哈爾濱市南崗區鼎新三道街37號','map15.png','0451-82516177',80,625);
INSERT INTO petmap(pmName,pmCity,pmAddress,pmImg,pmPhone,pmTop,pmLeft) 
VALUES ('拉薩妙妙安心寵物診所','西藏','拉薩市城關區納金路城東工商1樓','map16.png','0891-6223291',360,170);

最終結果:


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 很多同學對於overload和override傻傻分不清楚,建議不要死記硬背概念性的知識,要理解著去記憶。 先給出我的定義: overload(重載):在同一類或者有著繼承關係的類中,一組名稱相同,參數不同的方法組。本質是對不同方法的稱呼。 override(覆寫):存在繼承關係的兩個類之間,在子類 ...
  • 標記名稱:flink [標簽簡介] [功能說明]:用於獲取友情鏈接,其對應後臺文件為"includetaglibflink.lib.php". [適用範圍]:全局標記,適用V55,V56,V57。 [參數說明]: [1]type:鏈接類型,值: a. textall 全部用文字顯示; b. text ...
  • // 首碼形式:增加然後取回值UPInt& UPInt::operator++(){ *this += 1; // 增加 return *this; // 取回值}// postfix form: fetch and incrementconst UPInt UPInt::operator++(in ...
  • 如下記錄一次作業: 很顯然,我這個應該屬於二逼青年版,會在以後更新文藝青年版的答案。 1、模仿sed,一個文件中,用新字元串替換老字元串。 2、查找、添加、刪除特定的內容 ...
  • 我的博客園博文地址:http://www.cnblogs.com/tenglongwentian/ Lucene,最新版是Lucene6.2.1,匹配的jdk版本是1.8正式版。這裡用jdk7最後一版,所以用Lucene5.3.3。 新建一個maven項目,如果不會可以參考前面的博文,前面的博文有專 ...
  • 以太坊是區塊鏈開發領域最好的編程平臺,而truffle是以太坊(Ethereum)最受歡迎的一個開發框架,這是我們第一篇區塊鏈技術文章介紹truffle的原因,實戰是最重要的事情,這篇文章不講原理,只搭建環境,運行第一個區塊鏈程式(Dapp)。 安裝truffle $ npm install -g ...
  • 1.計算程式運行時常 2.文件讀寫 3.立flag 設置布爾變數,用來在程式運行時對一些邏輯進行標記。其中false和true需要自己定義其含義。因此在設置flag的時,需要註意false以及true對應的含義。否則這些邏輯上的錯誤很難被檢查出來。 4.使用HashMap 聲明myMap為HashM ...
  • 這個案例類似於在地圖上滾動滾輪,能縮小或者放大地圖,分別用zoomIn和zoomOut來命名。 代碼如下: 另外,detail在滾輪事件中,向上滾——放大(detail == -3),觸發zoomOut;向下滾——縮小(detail == 3),觸發zoomIn。 自定義事件需要trigger來主動 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...