【Android】ImageMap,图片地图

https://github.com/CFutureTeam/android-image-map

package com.*.imagemap;

import *.imagemap.ImageMap;
import *.imagemap.core.Bubble;
import *.imagemap.core.CircleShape;
import *.imagemap.core.Shape;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Color;
import android.os.Bundle;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;

public class MainActivity extends Activity {

    private ImageMap map; // lib库里面自定义试图对象

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        map = (ImageMap) findViewById(R.id.imagemap);
        // 用资源文件创建一个bitmap,地图
        Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.imm_01, new BitmapFactory.Options());
        // 把图加载到ImageMap上面去
        map.setMapBitmap(bitmap);
        // 加载一个用来标注位置的视图view,这个view自己可以定义的
        View bubble = getLayoutInflater().inflate(R.layout.popup, null);
        // 把试图加进ImageMap
        map.setBubbleView(bubble, new Bubble.RenderDelegate() {
            @Override
            public void onDisplay(Shape shape, View bubbleView) {
                ImageView logo = (ImageView) bubbleView.findViewById(R.id.logo); //
                // 通过bubbleView得到相应的控件
                TextView name = (TextView) bubbleView.findViewById(R.id.name);
                name.setText("我的位置"); // 标注上面显示一个文本
                logo.setImageResource(R.drawable.kfc_logo); // 图片
            }
        });

        // 该方法可以实现一个圆点,用于和bubble进行绑定,并且最终显示在地图上
        CircleShape black = new CircleShape("NO", Color.RED); // Color.BLUE,圆点的颜色
        double x = Math.random() * 100 + 100; // 随机x坐标,实际中,可以从服务器获取
        double y = Math.random() * 100 + 100; // 随机y坐标
        black.setValues(String.format("%.5f,%.5f,15", x, y)); // 设置圆点的位置和大小
        map.addShapeAndRefToBubble(black); // 加到地图上

        // 该方法可以实现一个圆点,用于和bubble进行绑定,并且最终显示在地图上
        CircleShape black2 = new CircleShape("NO2", Color.BLUE); // Color.BLUE,圆点的颜色
        double x1 = Math.random() * 300 + 100; // 随机x坐标,实际中,可以从服务器获取
        double y1 = Math.random() * 300 + 100; // 随机y坐标
        black2.setValues(String.format("%.5f,%.5f,15", x1, y1)); // 设置圆点的位置和大小
        map.addShape(black2); // 加到地图上

        // 该方法可以实现一个圆点,用于和bubble进行绑定,并且最终显示在地图上
        CircleShape black3 = new CircleShape("NO3", Color.YELLOW); // Color.BLUE,圆点的颜色
        double x2 = Math.random() * 500 + 100; // 随机x坐标,实际中,可以从服务器获取
        double y2 = Math.random() * 500 + 100; // 随机y坐标
        black3.setValues(String.format("%.5f,%.5f,15", x2, y2)); // 设置圆点的位置和大小
        map.addShape(black3); // 加到地图上

    }

}

 

转载于:https://www.cnblogs.com/niray/p/4366581.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要在Java中使用docx模板插入图片,同样可以使用Apache POI库来实现。以下是一个简单的示例代码: ```java import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.util.HashMap; import java.util.Map; import org.apache.poi.util.IOUtils; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.xmlbeans.XmlCursor; public class InsertImageInDocxTemplate { public static void main(String[] args) throws Exception { //读取docx模板 FileInputStream fis = new FileInputStream("template.docx"); XWPFDocument doc = new XWPFDocument(fis); //准备要替换的占位符和图片 Map<String, byte[]> imageMap = new HashMap<>(); imageMap.put("image1", IOUtils.toByteArray(new FileInputStream("image1.jpg"))); imageMap.put("image2", IOUtils.toByteArray(new FileInputStream("image2.jpg"))); //遍历所有段落和运行 for (XWPFRun run : doc.getParagraphs().get(0).getRuns()) { XmlCursor cursor = run.getCTR().newCursor(); cursor.selectPath("./*"); while (cursor.toNextSelection()) { if (cursor.getObject() instanceof org.apache.xmlbeans.impl.piccolo.xml.PiccoloElement) { //获取占位符的文本 String text = cursor.getTextValue(); //如果占位符是要替换的图片占位符 if (imageMap.containsKey(text)) { //删除占位符 cursor.removeXml(); //插入图片 byte[] bytes = imageMap.get(text); XWPFRun newRun = doc.createParagraph().createRun(); newRun.addPicture(new FileInputStream(new File("image.jpg")), XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(300), Units.toEMU(200)); } } } } //保存文档 FileOutputStream fos = new FileOutputStream("output.docx"); doc.write(fos); fos.close(); doc.close(); } } ``` 在上述示例代码中,我们首先使用XWPFDocument对象读取docx模板。接着,我们准备一个Map来存储图片文件名和对应的字节数组。然后,我们遍历文档中的所有段落和运行,并使用XmlCursor对象定位到文档中的占位符。如果占位符是要替换的图片占位符,我们就将其删除,并使用createParagraph()和createRun()方法创建一个新的段落和运行,然后再使用addPicture()方法将图片插入到运行中。最后,我们使用XWPFDocument对象的write()方法将文档写入文件系统中。 注意:这个示例代码中的模板文件名为template.docx,你需要将其替换为你自己的模板文件名。另外,示例代码中的图片文件名和占位符名称为image1和image2,你需要根据自己的实际情况进行替换。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值