1

我在 android 中制作了一个应用程序,用于跟踪车辆并使用 JavaScript 在 Web 浏览器中可视化移动。移动时 android 应用程序将新的纬度和经度插入数据库中,而另一侧则由 Web 应用程序使用以显示在线跟踪。

不知何故,我为一辆车做到了。

但是假设有五辆车,那么我们如何在谷歌地图中显示所有五辆在线跟踪

谁能告诉我该怎么做..

我的代码如下

地图.jsp

<html>
   <head>
   <meta http-equiv="content-type" content="text/html; charset=utf-8"/>
   <style type="text/css">
   body { font: normal 10pt Helvetica, Arial; }
    #map { width: 100%; height: 100%; border: 0px; padding: 0px; }
   </style>

   <script type="text/javascript" src="http://maps.google.com/maps/api/js?v=3&sensor=false"></script>
   <script type="text/javascript" src="http://code.jquery.com/jquery-1.8.3.js"></script>
   <script type="text/javascript">

   var icon = new google.maps.MarkerImage("http://maps.google.com/mapfiles/ms/micons/blue.png");
   var center = null;
   var map = null;
   var currentPopup;
   var bounds = new google.maps.LatLngBounds();
   var markLAT,markLNG;
   var marker;

function moveMarker( map, marker, lat, lon) {

    marker.setPosition( new google.maps.LatLng( lat, lon ) );
    map.panTo( new google.maps.LatLng( lat, lon ) );

};


  function addMarker(lat, lng, info)
 { 
   var pt = new google.maps.LatLng(lat, lng);
   map.setCenter(pt);
   map.setZoom(17);
bounds.extend(pt);
marker = new google.maps.Marker(
{
    position: pt,
    icon: icon,
    map: map
});

var popup = new google.maps.InfoWindow(
{
    content: "Driver: Manu",
    maxWidth: 300
});

google.maps.event.addListener(marker, "click", function()
{
    if (currentPopup != null)
    {
        currentPopup.close();
        currentPopup = null;
    }
    popup.open(map, marker);
    currentPopup = popup;
   });
    google.maps.event.addListener(popup, "closeclick", function()
   {
    //map.panTo(center);
    //currentPopup = null;
   });
   }

function initMap()
{
 map = new google.maps.Map(document.getElementById("map"), {
center: new google.maps.LatLng(10.013566, 76.331549),
zoom: 17,
mapTypeId: google.maps.MapTypeId.ROADMAP,
mapTypeControl: false,
mapTypeControlOptions:
{
   style: google.maps.MapTypeControlStyle.DROPDOWN_MENU
},
navigationControl: true,
navigationControlOptions:
{
style: google.maps.NavigationControlStyle.SMALL
 }
 });

routePoints = [];
  $.getJSON('Coordinates', function(items)
  {

   for (var i = 0; i < items.length; i++) {
      (function(item) {
          if(i==items.length-1)
        addMarker(item.lat, item.lng,  item.lng);
        markLAT=items[i].lat;
        markLNG=items[i].lng;
    })(items[i]);
    routePoints.push(new google.maps.LatLng(items[i].lat,items[i].lng));
   }
   var route= new google.maps.Polyline({
    path: routePoints,
    strokeColor: '#FF0000',
    strokeOpacity: 2.0,
    strokeWeight: 5,
    editable: false
  });

  route.setMap(map);


  });

 center = bounds.getCenter();
 //map.fitBounds(bounds);

   }

 var auto_refresh = setInterval(
function ()
{
    $.getJSON('Updates', function(items)
  {

if(markLAT!=items[0].lat&&markLNG!=items[0].lng)
    {

    routePoints.push(new google.maps.LatLng(items[0].lat,items[0].lng));
    var route= new google.maps.Polyline({
    path: routePoints,
    strokeColor: '#FF0000',
    strokeOpacity: 2.0,
    strokeWeight: 5,
    editable: false
  });

  route.setMap(map);  
  //removeMarker(markLAT,markLNG);
  moveMarker(map,marker,items[0].lat,items[0].lng);
     markLAT=items[0].lat;
     markLNG=items[0].lng;        
    }
  });
//$('#load').load('index1.jsp').fadeIn("slow");
}, 1000); // refresh every 10000 milliseconds

   </script>
   <script  type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">

</script>

    </head>
   <body onload="initMap()" style="margin:0px; border:0px; padding:0px;">
       <div id="load"> </div>
   <div id="map"></div>

    </html>

两个 Servlet 类 Coordinates.java、Updates.java

坐标.java

package model;

import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.*;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class Coordinates extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException, ClassNotFoundException, SQLException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
             Connection connection;
             Class.forName("com.mysql.jdbc.Driver");
             String url="jdbc:mysql://144.76.19.105/iload?user=nidhish123&password=nidhish123";
             connection=DriverManager.getConnection(url);
             Statement statement = connection.createStatement();
             ResultSet set = statement.executeQuery("SELECT lat, lng from latng");
             ArrayList ar=new ArrayList();

             while(set.next())
             {
             Map<String, String> options = new LinkedHashMap<String, String>();
             options.put("lat", set.getString(1));
             options.put("lng", set.getString(2));
             ar.add(options);
             }
             String json = new Gson().toJson(ar); 
             response.setContentType("application/json");
             response.setCharacterEncoding("UTF-8");
             response.getWriter().write(json);
        } finally {            
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Coordinates.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Coordinates.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        try {
            processRequest(request, response);
        } catch (ClassNotFoundException ex) {
            Logger.getLogger(Coordinates.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SQLException ex) {
            Logger.getLogger(Coordinates.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}

更新.java

package model;

import com.google.gson.Gson;
import java.io.IOException;
import java.io.PrintWriter;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.Map;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class Updates extends HttpServlet {
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {
             ArrayList ar=new ArrayList();
             boolean foundResults = false;
             ResultSet set = null;
             Statement statement = null;         
             String lat=null;
             String lng=null;
                    int count=0;
                        try 
                        {
                            Class.forName("com.mysql.jdbc.Driver");
                            Connection conn=DriverManager.getConnection("jdbc:mysql://144.76.19.105/iload", "nidhish123", "nidhish123");
                            statement = conn.createStatement();
                            set = statement.executeQuery("SELECT lat,lng FROM latng ORDER BY id DESC LIMIT 1");
                            while(set.next())
                            {
                                Map<String, String> options = new LinkedHashMap<String, String>();
                                options.put("lat", set.getString(1));
                                options.put("lng", set.getString(2));
                                ar.add(options);
                            }
                            conn.close(); 
                            String json = new Gson().toJson(ar); 
                            response.setContentType("application/json");
                            response.setCharacterEncoding("UTF-8");
                            response.getWriter().write(json);
                        }
                        catch(Exception e)
                        {
                            out.print(e);
                        }
        }catch(Exception s){
            System.out.println("ERROR!!!");
            s.printStackTrace();
        }
         finally {            
            out.close();
        }
    }

    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
            throws ServletException, IOException {
        processRequest(request, response);
    }

    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>
}
4

1 回答 1

0

您可以将每个导航路径保存为Polyline,然后通过调用将它们全部渲染为循环Polyline.setVisible(true)

于 2013-06-18T07:54:04.507 回答