Java 如何在每次请求后放置谷歌地图标记
我有一个简单的web应用程序,上面有JSP页面和表单。它将带有“ID”标记的请求发送到servlet。Servlet将这个ID查询到MySQL数据库,并返回一个用于在地图上创建标记的地址 我想要我的申请:Java 如何在每次请求后放置谷歌地图标记,java,google-maps,jsp,servlets,google-maps-api-3,Java,Google Maps,Jsp,Servlets,Google Maps Api 3,我有一个简单的web应用程序,上面有JSP页面和表单。它将带有“ID”标记的请求发送到servlet。Servlet将这个ID查询到MySQL数据库,并返回一个用于在地图上创建标记的地址 我想要我的申请: 在地图上的每个请求之后显示所有标记 删除其中一个或所有人的机会 但现在我所拥有的只是更新页面和一个标记 我将感谢你的帮助 以下是一个jsp页面: <%@ page contentType="text/html;charset=UTF-8" language="java" %> &l
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-16"/>
<title>Google Maps Geocoding Demo</title>
<script src="http://maps.google.com/maps/api/js?sensor=false"
type="text/javascript"></script>
</head>
<body>
<form action="qwe" method="get">
<table>
<tr>
<td align="left"> ID</td>
<td><input type="text" name="id"></td>
</tr>
<tr>
<td><input type="submit" value="Send"></td>
</tr>
<tr>
<td>Adress:</td>
<td>${Street_char} ${Street_name},${Street_adr}, ${Flat_number} floor ${Floor}</td>
</tr>
<tr>
<td>test</td>
<td>${test}</td>
</tr>
</table>
</form>
<br>
<div id="map" style="width: 400px; height: 400px;"></div>
<script type="text/javascript">
var address = "${address}";
var map = new google.maps.Map(document.getElementById('map'), {
mapTypeId: google.maps.MapTypeId.ROADMAP,
zoom: 18
});
var geocoder = new google.maps.Geocoder();
geocoder.geocode({'address': address},
function (results, status) {
if (status == google.maps.GeocoderStatus.OK) {
var marker = new google.maps.Marker({
position: results[0].geometry.location,
map: map,
title: 'Uluru-Test'
});
var infowindow = new google.maps.InfoWindow();
new google.maps.event.addListener(marker, 'mouseover', (function (marker) {
// new google.maps.event.addListener(marker, 'click', (function(marker) {
return function () {
var content = address;
infowindow.setContent('<div><strong>' + 'test' + '</strong><br>' + content + '</div>');
infowindow.open(map, marker);
}
})(marker));
map.setCenter(results[0].geometry.location);
}
else {
// Google couldn't geocode this request. Handle appropriately.
}
});
</script>
</body>
</html>
谷歌地图地理编码演示
身份证件
地址:
${Street\u char}${Street\u name},${Street\u adr},${Flat\u number}楼层${floor}
测试
${test}
var address=“${address}”;
var map=new google.maps.map(document.getElementById('map'){
mapTypeId:google.maps.mapTypeId.ROADMAP,
缩放:18
});
var geocoder=new google.maps.geocoder();
geocoder.geocode({'address':address},
功能(结果、状态){
if(status==google.maps.GeocoderStatus.OK){
var marker=new google.maps.marker({
位置:结果[0]。geometry.location,
地图:地图,
标题:“乌卢鲁试验”
});
var infowindow=new google.maps.infowindow();
新的google.maps.event.addListener(标记,'mouseover',(函数(标记){
//新的google.maps.event.addListener(标记,'click',(函数(标记){
返回函数(){
var内容=地址;
infowindow.setContent(“”+“测试”+”“+content+”);
信息窗口。打开(地图、标记);
}
})(标记);
map.setCenter(结果[0].geometry.location);
}
否则{
//谷歌无法对此请求进行地理编码。请妥善处理。
}
});
下面是servlet:
@WebServlet(name = "Servlet", value = "/qwe")
public class Servlet extends HttpServlet {
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
private static final String URL = "jdbc:mysql://localhost:3306/web";
private static final String USERNAME = "root";
private static final String PASSWORD = "root";
Connection connection;
PreparedStatement preparedStatement;
Variables variables = new Variables();
Variables adr = new Variables(variables.getStreet_char(), variables.getStreet_name(), variables.getStreet_adr());
String Select_addr = "SELECT * FROM client WHERE id=?;";
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
int id_jsp = Integer.parseInt(req.getParameter("id"));
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection(URL, USERNAME, PASSWORD);
preparedStatement = connection.prepareStatement(Select_addr);
preparedStatement.setInt(1, id_jsp);
ResultSet resultSet = preparedStatement.executeQuery();
while (resultSet.next()) {
variables.setId(resultSet.getInt("id"));
variables.setName(resultSet.getString("Name"));
variables.setSurname(resultSet.getString("Surname"));
variables.setStreet_char(resultSet.getString("Street_char"));
variables.setStreet_name(resultSet.getString("Street_name"));
variables.setStreet_adr(resultSet.getString("Street_adr"));
variables.setFlat_number(resultSet.getInt("Flat_number"));
variables.setFloor(resultSet.getInt("Floor"));
}
resp.setContentType("text/html;charset=utf-8");
PrintWriter out = resp.getWriter();
out.println("ID: " + id_jsp + "<br>");
String adr = "" + variables.getStreet_char() + " " + variables.getStreet_name()
+ "," + variables.getStreet_adr() + "";
req.setAttribute("test", adr);
req.setAttribute("Name", variables.getName());
req.setAttribute("Surname", variables.getSurname());
req.setAttribute("Street_char", variables.getStreet_char());
req.setAttribute("Street_name", variables.getStreet_name());
req.setAttribute("Street_adr", variables.getStreet_adr());
req.setAttribute("Flat_number", variables.getFlat_number());
req.setAttribute("Floor", variables.getFloor());
req.setAttribute("address", adr);
req.getRequestDispatcher("mypage.jsp").forward(req, resp);
System.out.println(adr);
// out.close();
resultSet.close();
preparedStatement.close();
connection.close();
} catch (SQLException se) {
se.printStackTrace();
} catch (Exception e) {
e.printStackTrace();
} finally {
try {
if (preparedStatement != null)
preparedStatement.close();
} catch (SQLException se2) {
se2.printStackTrace();
}
try {
if (connection != null)
connection.close();
} catch (SQLException se) {
se.printStackTrace();
}
}
}
}
@WebServlet(name=“Servlet”,value=“/qwe”)
公共类Servlet扩展了HttpServlet{
静态最终字符串JDBC_DRIVER=“com.mysql.JDBC.DRIVER”;
私有静态最终字符串URL=“jdbc:mysql://localhost:3306/web";
私有静态最终字符串USERNAME=“root”;
私有静态最终字符串PASSWORD=“root”;
连接;
编制报表编制报表;
变量=新变量();
变量adr=新变量(Variables.getStreet_char()、Variables.getStreet_name()、Variables.getStreet_adr());
String Select_addr=“Select*FROM client,其中id=?;”;
@凌驾
受保护的void doGet(HttpServletRequest-req,HttpServletResponse-resp)抛出ServletException,IOException{
int id_jsp=Integer.parseInt(req.getParameter(“id”);
试一试{
Class.forName(“com.mysql.jdbc.Driver”);
connection=DriverManager.getConnection(URL、用户名、密码);
preparedStatement=connection.prepareStatement(选择地址);
setInt(1,id_jsp);
ResultSet ResultSet=preparedStatement.executeQuery();
while(resultSet.next()){
variables.setId(resultSet.getInt(“id”);
variables.setName(resultSet.getString(“Name”);
variables.setSurname(resultSet.getString(“姓氏”);
variables.setStreet_char(resultSet.getString(“Street_char”);
variables.setStreet_name(resultSet.getString(“Street_name”));
变量.setStreet_adr(resultSet.getString(“Street_adr”));
变量.setFlat_number(resultSet.getInt(“Flat_number”);
变量.setFloor(resultSet.getInt(“Floor”);
}
相应的setContentType(“text/html;charset=utf-8”);
PrintWriter out=resp.getWriter();
println(“ID:+ID\u jsp+”
”;
字符串adr=”“+变量。getStreet\u char()+“”+变量。getStreet\u name()
+“,”+变量。getStreet_adr()+”;
要求设置属性(“测试”,adr);
setAttribute(“Name”,variables.getName());
req.setAttribute(“姓氏”,variables.getLastname());
req.setAttribute(“Street_char”,variables.getStreet_char());
req.setAttribute(“Street_name”,variables.getStreet_name());
请求setAttribute(“Street_adr”,variables.getStreet_adr());
req.setAttribute(“Flat_number”,variables.getFlat_number());
setAttribute(“Floor”,variables.getFloor());
请求设置属性(“地址”,adr);
req.getRequestDispatcher(“mypage.jsp”).forward(req,resp);
系统输出打印(adr);
//out.close();
resultSet.close();
preparedStatement.close();
connection.close();
}捕获(SQLSE异常){
se.printStackTrace();
}捕获(例外e){
e、 printStackTrace();
}最后{
试一试{
if(preparedStatement!=null)
preparedStatement.close();
}捕获(SQLException se2){
se2.printStackTrace();
}
试一试{
if(连接!=null)
connection.close();
}捕获(SQLSE异常){
se.printStackTrace();
}
}
}
}
希望每个请求只设置一个地址。相反,您可以尝试获取所有地址并将其作为json数组发送给jsp
在下面的示例中,我使用了城市、国家
进行标记<
[{city: "Manhattan",country:"United States",state:"Manhattan"},
{city:"Newark",country:"United States",state:"Newark"}]
<script type="text/javascript">
var map;
// Creates the map
function initialize() {
map = new google.maps.Map(document.getElementById('map'), {
zoom: 10,
center: new google.maps.LatLng(40.77627, -73.910965), //For Newyork
mapTypeId: google.maps.MapTypeId.ROADMAP
});
}
// This function takes an array argument containing a list of marker data
function generateMarkers(locations) {
//alert(locations);
for (var i = 0; i < locations.length; i++) {
new google.maps.Marker({
position: new google.maps.LatLng(locations[i][1], locations[i][2]),
map: map,
title: locations[i][0]
});
}
}
</script>
<div id="map" style="width:500px; height:250px;;padding-top:0px;margin:25px 50px 25px 55px;"></div>
<script type="text/javascript">
window.onload = function () {
initialize();
var d = $.ajax({
type: "POST",
url: "servletURL",
cache: false,
async: false
}).responseText;
var loc2 = [];
var locations1 = "";
if(d.length != 0) {
var obj = jQuery.parseJSON(d);
$.each(obj, function(key,row) {
//alert(row.city + "," + row.country);
var address = row.city + "," +row.country;
geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
loc2.push("['" + row.city + "'," + results[0].geometry.location.lat() + "," + results[0].geometry.location.lng() +"]");
locations1 = "[" + loc2 + "]";
generateMarkers(eval(locations1));
}
else {
alert("Geocode was not successful for the following reason: " + status);
}
});
});
}
};
</script>
</div>
public List<GoogleMapHelper> getAddressForGoogleMap() {
String sql = "Select city, state, country FROM dbo.Customerdetails ";
SQLQuery query = getSession().createSQLQuery(sql);
query.setResultTransformer(Criteria.ALIAS_TO_ENTITY_MAP);
List data = query.list();
List<GoogleMapHelper> address = new ArrayList<GoogleMapHelper>();
for (Object object : data) {
GoogleMapHelper googleHelper = new GoogleMapHelper();
Map row = (Map) object;
googleHelper.setCity(row.get("city").toString());
googleHelper.setState(row.get("state").toString());
googleHelper.setCountry(row.get("country").toString());
address.add(googleHelper);
}
return address;
}
public class GoogleMapHelper {
private String city;
private String state;
private String country;
(getters and setters)
}