#javascript #mysql
#javascript #mysql
Вопрос:
Я пытаюсь нарисовать полилинию с координатами из mysql с помощью функции javascript в файле jsp Я попробовал приведенный ниже код, но он не работает!
<script type="text/javascript" src="http://maps.googleapis.com/maps/api/js?sensor=false"></script>
<script type="text/javascript">
function initialisation(){
var centreCarte = new google.maps.LatLng( 47.381381, 0.687503 );
var optionsCarte = {
zoom: 12,
center: centreCarte,
mapTypeId: google.maps.MapTypeId.ROADMAP
}
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
Statement state = null;
ResultSet resul= null;
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/new","root","pass");
state=connection.createStatement();
String sql ="SELECT lat, lng from Route ";
result = statement.executeQuery(sql);
while(result.next()){
s1= result.getFloat(lat);
s2= result.getFloat(lng);
var maCarte = new google.maps.Map( document.getElementById( "EmplacementDeMaCarte" ), optionsCarte );
var tableauPointsPolyline = [
new google.maps.LatLng(" s1 "," s2 ")
];
var optionsPolyline = {
map: maCarte,
path: tableauPointsPolyline
};
var maPolyline = new google.maps.Polyline( optionsPolyline );
}
google.maps.event.addDomListener( window, 'load', initialisation );
}
</script>
Что необходимо для устранения указанной проблемы?
Комментарии:
1. Доступ к базе данных с помощью PHP. Почитайте об Ajax.
2. Я работаю с J2EE!
3. «Это не работает» обычно этого недостаточно для выявления проблемы. Рассмотрите возможность добавления более подробной информации о том, что не работает.
Ответ №1:
Прекратите пробовать случайный код! Кроме того, не путайте Java и JavaScript. В опубликованном вами коде используются скриплеты, и вы пропустили символы <% %>,
<%
Class.forName("com.mysql.jdbc.Driver");
Connection conn = null;
Statement state = null;
ResultSet resul= null;
// Do you have mysql on localhost listening to 3306. Is there a new db? Is root's
// password really pass?
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/new","root","pass");
state=connection.createStatement();
String sql ="SELECT lat, lng from Route ";
result = statement.executeQuery(sql);
while(result.next()){
%>
s1=<%= result.getFloat(lat) %>;
s2=<%= result.getFloat(lng) %>;
<% } %>
Обратите внимание, что вы не должны использовать модель 1 в 2014 году (смешивание Java в целом, но особенно кода JDBC, в JSP вызывает проблемы).
Ответ №2:
<%@page import="java.util.Arrays"%>
<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no">
<meta charset="utf-8">
<title>Simple Polylines</title>
<style>
html,body {
height: 100%;
margin: 0;
padding: 0;
}
#map {
height: 100%;
}
</style>
</head>
<body>
<div id="map"></div>
<%!
public static float[] getFloats(List<Float> val){
int length = val.size();
float[] result = new float[length];
for (int i = 0; i < length; i ) {
result[i] = val.get(i).floatValue();
}
return resu<
}
%>
<%!String string=null; %>
<%
string=request.getParameter("orderId");<!--getting order_id from another jsp by getparameter-->
out.println(string);
%>
<%
Class.forName("com.mysql.jdbc.Driver");
java.sql.Connection con = DriverManager.getConnection("jdbc:mysql://localhost:3306/your_DB","username","pass");
Statement st= con.createStatement();
String query="SELECT latitude,longitude FROM yourtable where order_id=" string;
ResultSet rs=st.executeQuery(query);
//String[] lonlat;
List<Float> list=new ArrayList<Float>();
while(rs.next())
{
String s1=rs.getString(1);
String s2=rs.getString(2);
float f1 = Float.parseFloat(s1);
float f2 = Float.parseFloat(s2);
list.add(f1);
list.add(f2);
}
float[] arr=getFloats(list);
for(int i=0;i<arr.length;i ){
System.out.println(arr[i]);
}
System.out.println(arr);
System.out.println(Arrays.toString(arr));
if(arr != null) { %>
<script>
var params = new Array(<%
for(int i = 0; i < arr.length; i ) {
out.print(""" arr[i] """);
if(i 1 < arr.length) {
out.print(",");
}
}
%>);
</script>
<% } %>
<!-- float[] lonlat=new float[list.size()];
System.out.println(lonlat.toString()); -->
%>
<script type="text/javascript">
<%-- var z= [<%= lonlat%>] --%>
<%-- var z = <%= items.toString() %> --%>
<%-- var z = [ <%= values.toString() %> ]; --%>
var z = <%= Arrays.toString(arr) %> ;
// var z = [55.02,-122.214,21.291,-157.821,-18.142,178.431,-27.467,153.027]
alert(params);
var flightPlanCoordinates = [
{lat: z[0], lng: z[1]},
{lat: z[2], lng: z[3]},
{lat: z[4], lng: z[5]},
{lat: z[6], lng: z[7]}
];
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 16,
center:{lat:28.6443,lng:77.3563},
/* center: {lat: 0, lng: -180}, */
mapTypeId: 'terrain'
});
var flightPath = new google.maps.Polyline({
path: flightPlanCoordinates,
geodesic: true,
strokeColor: '#FF0000',
strokeOpacity: 1.0,
strokeWeight: 2
});
flightPath.setMap(map);
}
</script>
<script async defer
src="https://maps.googleapis.com/maps/api/js?key=YOURAPIKEYamp;callback=initMap">
</script>
</body>
</html>