mapxtreme+java代码问题. 根据经纬度进行标注一个点?
以下为render.jsp内容. 我的目标是根据经纬度标注一个点? 如何做啊,我初学啊.
<%@ page import ="java.awt.Color" %>
<%@ page import ="com.mapinfo.mapj.*" %>
<%@ page import ="com.mapinfo.xmlprot.mxtj.*" %>
<%@ page import ="com.mapinfo.mapxtreme.client.*" %>
<%@ page import ="com.mapinfo.util.*" %>
<%@ page import ="com.mapinfo.theme.SelectionTheme" %>
<%@ page import ="java.util.Vector" %>
<%@ page import ="com.mapinfo.dp.FeatureSet" %>
<%@ page import ="com.mapinfo.graphics.*" %>
<%@ page import ="com.mapinfo.labeltheme.OverrideLabelTheme" %>
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Insert title here</title>
</head>
<body>
<% String pp="Hello Word";
String MapXtremeServletUrl="http://localhost:8080/mapxtreme482/mapxtreme";
MapJ MyMapJ=new MapJ();
MyMapJ.loadGeoset("C:\\dxh\\table\\dxh.gst","C:\\dxh\\table",null);
//MyMapJ.loadGeoset("C:\\dxh\\maps\\CHINA.GST","C:\\dxh\\maps",MapXtremeServletUrl);
MyMapJ.setDeviceBounds(new DoubleRect(0,0,800,600)); //
//out.println(MyMapJ.getCenter().x);
//out.println(MyMapJ.getDistanceUnits().getMetersPerUnit());
DoublePoint dp=new DoublePoint(101.1,38.5);
//MyMapJ.transformScreenToNumeric(dp);
MyMapJ.setZoom(MyMapJ.getZoom()/20);
MyMapJ.setCenter(dp);
*/
/*Layers layers = MyMapJ.getLayers();
Layer layer1;
String layerName;
for (int i=0; i < layers.size(); i++) {
layer1 = layers.elementAt(i);
layerName = layer1.getName();
out.println(layerName+"<br />");
}
*/
Layer thisLayer = MyMapJ.getLayers().getLayer("中国底图");
LabelProperties labelProps = new LabelProperties();
// Set the Label offset and alignments to their default positions.
labelProps.setOffset(LabelProperties.DEFAULT_OFFSET);
labelProps.setHorizontalAlignment(LabelProperties.HORIZ_ALIGN_DEFAULT);
labelProps.setVerticalAlignment(LabelProperties.VERT_ALIGN_DEFAULT);
// Turn the multiline option on and set the columns to be used for labeling.
labelProps.setMultiLineTextMode(LabelProperties.MULTILINE_TEXT_ON);
labelProps.setLabelExpression(""NAME:["+面积+"]\\nABBREV:["+名称+"]"");
// Set a Rendition for the Labels and create an
// OverrideLabelTheme in order to display the options // set.
Rendition rend = (Rendition) RenditionImpl.getDefaultRendition();
rend.setValue(Rendition.FONT_FAMILY, "Arial");
rend.setValue(Rendition.FONT_WEIGHT, 20);
rend.setValue(Rendition.FILL, Color.red);
labelProps.setRendition(rend);
OverrideLabelTheme orLabelTheme = new OverrideLabelTheme(labelProps, "Theme Name");
thisLayer.getLabelThemeList().add(orLabelTheme);
// Get the States Layer, set its LabelProperties object,
// and turn labeling on.
BaseLabelProperties base_label = new BaseLabelProperties(labelProps);
thisLayer.setLabelProperties(base_label);
thisLayer.setAutoLabel(true);
ImageRequestComposer imageRC= ImageRequestComposer.create(MyMapJ,256,Color.blue,"image/gif");
MapXtremeImageRenderer renderer=new MapXtremeImageRenderer(MapXtremeServletUrl);
renderer.render(imageRC);
renderer.toFile("c://aa.gif");
%>
<img align=center src="c://aa.gif" />
</body>
</html>
[解决办法]
用js脚本直接在页面上画吧
好过作为一个地图对象填加到图层当中
[解决办法]
地图图片一般是放在一个div当中的
在这个div上面再放一个div来显示临时对象,比如标注、选中状态,路径分析结果之类的
标注的时候根据坐标位置来判断 标注图标要放在div的哪个位置