在Java中向展开贴图添加标记

在Java中向展开贴图添加标记,java,google-maps-markers,Java,Google Maps Markers,我需要添加代码,以便在RSS提要中的每个地震位置显示一个标记,并通过修改方法(必要时添加新的辅助方法)使每个标记的半径为10。然后,我需要添加代码,根据地震的震级设置每个标记的样式 我知道我应该在设置方法中为列表功能中的每个PointFeature创建一个SimplePointMarker对象,以使标记显示在屏幕上,因此它可能涉及每个循环,但除此之外,我不确定如何对其进行编码 展开标记程序包说明 公共类地震城市地图扩展PApplet{ //您可以忽略这一点。这是为了防止eclipse生成警告。

我需要添加代码,以便在RSS提要中的每个地震位置显示一个标记,并通过修改方法(必要时添加新的辅助方法)使每个标记的半径为10。然后,我需要添加代码,根据地震的震级设置每个标记的样式

我知道我应该在设置方法中为列表功能中的每个PointFeature创建一个SimplePointMarker对象,以使标记显示在屏幕上,因此它可能涉及每个循环,但除此之外,我不确定如何对其进行编码

展开标记程序包说明

公共类地震城市地图扩展PApplet{
//您可以忽略这一点。这是为了防止eclipse生成警告。
私有静态最终长serialVersionUID=1L;
//如果脱机工作,请将此变量的值更改为true
私有静态最终布尔脱机=false;
//低于这个临界值的是轻微地震
公共静态最终浮动阈值_中等=5;
//低于这个临界值是一次小地震
公共静态最终浮动阈值\u灯=4;
/**在这里可以找到本地互动程序,以便在没有Internet连接的情况下工作*/
公共静态字符串mbtileString=“blankLight-1-3.mbtiles”;
//地图
私有展开图;
//遭受2.5级以上地震
私有字符串地震URL=”http://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.atom";
公共作废设置(){
大小(950600,OPENGL);
如果(脱机){
map=新的展开映射(这个,200,50,700,500,新的mbtilesprapprovider(mbtilestring));
earthquakesURL=“2.5_week.atom”//相同的提要,保存于2015年8月7日,用于脱机工作
}
否则{
map=new unfolingmap(这个,20050700500,新的Google.GoogleMapProvider());
//如果要使用本地文件进行测试,请取消注释下一行
//earthquakesURL=“2.5_week.atom”;
}
zoomToLevel地图(2);
createDefaultEventDispatcher(这个,映射);
//将使用新的SimplePointMarkers填充的列表
列表标记=新的ArrayList();
//使用提供的解析器收集每个地震的属性
//PointFeatures有一个getLocation方法
List sequences=ParseFeed.parseSequence(这是地震URL);
//这些打印语句显示(1)所有相关属性
//在功能中,以及(2)如何获取一个属性并使用它
如果(地震.size()>0){
点特征f=地震。获取(0);
System.out.println(f.getProperties());
对象magObj=f.getProperty(“幅值”);
float mag=float.parseFloat(magObj.toString());
//PointFeatures还有一个getLocation方法
}
//下面是一个如何使用Processing的颜色方法生成
//表示黄色的整数。
int黄色=颜色(255,255,0);
int red=颜色(255,0,0);
int蓝色=颜色(0,0,255);
//TODO:根据需要在此处添加代码
}
//一种建议的辅助方法,它包含地震特征和
//返回该地震的SimplePointMarker
//TODO:实现此方法并从安装程序中调用它(如果有帮助)
私有SimplePointMarker createMarker(点功能)
{
//setColor(颜色(150150150));
//完成实现并使用此方法(如果有帮助的话)。
返回新的SimplePointMarker(feature.getLocation());
//地震标记器=MapUtils.create
}
公众抽签(){
背景(10);
map.draw();
addKey();
}
//GUI中绘制键的helper方法
//TODO:实现此方法以绘制键
私有void addKey()
{
//请记住,您可以在此处使用Processing的图形方法
填充(255、250、240);//白色
矩形(25,50,150,250);/(左上角的x位置,左上角的y位置,宽度,高度)
填充(0);//显示文本所需的颜色,设置填充形状的颜色,采用int rgb值
textAlign(左、中);
文本大小(12);
text(“地震键”,50,75);//键的标题,取值(字符串、浮点x和浮点y)
填充(颜色(255,0,0));//红色
椭圆(50,125,15,15);/(x坐标,y坐标,宽度,高度)
填充(颜色(255,255,0));//黄色
椭圆(50175,10,10);
填充(颜色(0,0,255));
椭圆(50225,5,5);
填充(0,0,0);
文本(“5.0+量级”,75125);
text(“4.0+幅值”,75,175);//相同的y坐标,但不同的x,因此它可以显示在标记的右侧
文本(“低于4.0”,75,225);
}
}

很高兴认识一位在COURSERA上同样课程的人

首先,本部分只是一个示例,向您展示如何将“幅值”提取为浮点值

// These print statements show you (1) all of the relevant properties 
// in the features, and (2) how to get one property and use it

if (earthquakes.size() > 0) {
    PointFeature f = earthquakes.get(0);
    System.out.println(f.getProperties());
    Object magObj = f.getProperty("magnitude");
    float mag = Float.parseFloat(magObj.toString());
// PointFeatures also have a getLocation method
}
让我们检查一下本例中的对象类型和思维流。理解这一部分对完成作业非常重要。行“地震.get()”表示仅从地震中获取第一个对象,即对象列表

  • 地震:PointFeature对象列表
  • f:地震中只有一个点特征物体
  • magObj:作为对象的“大小”值来自f
  • mag:震级的最终浮点值
在这个问题中,您不需要定义新的变量。 我的伪代码是这样的

1. Use for~ loop
   for (PointFeature f : earthquakes) {  ...  }

2. Create new instance of SimplePointMarker 
   Check API document of SimplePointMarker class.
   It needs a Location as a parameter and returns SimplePointMarker object.
   You can get the location parameter easily, 
   because SimplePointMarker implements Maker interface.
   Just use 'getLocation()' method. 
   You made a many markers (SimplePointMaker)!

   After making many makers, you can practice with some methods.
   Ex) marker.setColor(yellow), marker.setRadius(10) 

3. What you have to do is only to add makers to map.
   Check API document again. (Map class)
   Map class has addMarker(Marker marker) method.
   You can use it out of for loop.

4. Your addKey() method is Great!

我希望这对你有帮助

很高兴认识一位在COURSERA上同样课程的人

首先,本部分只是一个示例,向您展示如何将“幅值”提取为浮点值

// These print statements show you (1) all of the relevant properties 
// in the features, and (2) how to get one property and use it

if (earthquakes.size() > 0) {
    PointFeature f = earthquakes.get(0);
    System.out.println(f.getProperties());
    Object magObj = f.getProperty("magnitude");
    float mag = Float.parseFloat(magObj.toString());
// PointFeatures also have a getLocation method
}
让我们检查一下本例中的对象类型和思维流。理解这一点非常重要
 //add this in setup method    
 for(PointFeature ia: earthquakes) {
         SimplePointMarker to = createMarker(ia);//using given healper method
         to.setRadius(10.0f); 

         Object magObj = ia.getProperty("magnitude");
         float mag = Float.parseFloat(magObj.toString());
         if(mag >= 5.0f ){

              to.setColor(red);
              }
         else if(mag >= 4.0f ){

              to.setColor(yellow);
              }
         else{

              to.setColor(blue);
              }

          markers.add(to);//adding created simplepointmarkers to(to) arraylist


     }//end of for loop

   map.addMarkers(markers)//entire list of markers is  added to map
}//end of setup()
List<PointFeature> earthquakes = ParseFeed.parseEarthquake(this,earthquakesURL);

for(PointFeature ft : earthquakes){
    markers.add(new SimplePointMarker(ft.getLocation(), ft.getProperties()));
}

map.addMarkers(markers);

for(Marker mk1 : markers){
    if((float) mk1.getProperty("magnitude") > 5.0)
        mk1.setColor(red);
    else{
        if((float) mk1.getProperty("magnitude") > 4.0 && 
           (float) mk1.getProperty("magnitude") < 5.0)
            mk1.setColor(yellow);
        else
            mk1.setColor(blue);
        }
    }
    map.addMarkers(markers);
}