我正在编写一个应用程序,使用java和javascript获取谷歌地图中某个位置的纬度,经度。
以下代码部分给出错误:
<script type="text/javascript">
var map;
//Initialization & some more code goes here
function centerChanged() {
<%
int lat=0,lng=0;
lat=%>map.getCenter().lat();<%
lng=%>map.getCenter().lng();<%
//request.setAttribute("lat", lat);
//request.setAttribute("lng", lng);
%>
}
从上面的代码中,这些是导致错误的两行:
lat=%>map.getCenter().lat();<% lng=%>map.getCenter().lng();<%
map.getCenter().lat()
&lt;&lt;这将返回google maps API中提到的数字:
org.apache.jasper.JasperException:PWC6033:Javac编译出错 对于JSP
PWC6197:jsp文件中的第81行:/maptest.jsp发生错误 PWC6199:生成的servlet错误:string:///maptest_jsp.java:127: 找到不兼容的类型:void required:int
PWC6197:jsp文件中的第82行:/maptest.jsp发生错误 PWC6199:生成的servlet错误:string:///maptest_jsp.java:130: 找到不兼容的类型:void required:int
任何人都可以告诉我有什么问题吗?
答案 0 :(得分:1)
如果您尝试获取双倍(数据类型)格式的纬度和经度,则将其向下转换为整数。
int xTemp = (int) (tempLatitude);
int yTemp = (int) (tempLong);
并设置中心,您可以使用 -
map.setCenter(); method.
希望我能理解你的问题。
答案 1 :(得分:1)
您正尝试将Javascript中的值动态插入到JSP中。错误是JSP在服务器端执行,而Javascript在客户端执行。
你在那里写的等同于Java代码:
out.write("function centerChanged() {");
int lat=0,lng=0;
lat=;
out.write("map.getCenter().lat();");
lng=;
out.write("map.getCenter().lng();");
//request.setAttribute("lat", lat);
//request.setAttribute("lng", lng);
out.write("}");
得到它?无论被&lt; %%&gt;包围的是什么
是纯Java代码,不管是什么,都是打印出来的要解决此问题,您需要更改在服务器端JSP代码中检索客户端Javascript值的逻辑。