地圖 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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...