В рамках Coursera UCSD Java класса, мы работаем с обработкой и раскладывание карт библиотеки.
Курс предоставляет Вам код стартера, который я пытаюсь расширить. Но я столкнулся с проблемой.
На моем рабочем компьютер, где я делаю большую часть моего обучения, я действительно хорошее приложение началось. Я решил взять его домой к своей жене, чтобы показать ей, клонированием мой GitHub репо на мой домашний ноутбук.
Ни один из librar / JAR файлов не было включены, так что я скачал их непосредственно из обработки и раскладывание загрузит страницу. Результат был кошмаром. Ошибка после ошибки после ошибки. Я предполагаю, что Coursera / UCSD использовал старые версии библиотек, а также новые версии не совместимы. Кажется, дрянной, но независимо от того.
Далее я скачал все файлы JAR из Coursera зрения. Результаты немного лучше, но все еще довольно дурацкий. А именно, когда я создаю UnfoldingMap()
объект, параметры для расположения в окне, а также размер абсолютно ничего не делать.
1.) Я использую обработки size()
метод размера вверх или вниз , содержащее окно, он масштабирует объект карты вверх или вниз. Он полностью игнорирует аргументы в размер и расположение UnfoldingMap()
.
2. нет) Объект на карте всегда толкнул в левом нижнем углу окна, не имеет значения, это аргументы в пользу позиции.
3.) Серый background()
я выбрал действительно показать карту вокруг, но сам фон затем окружен большим черным полем, что также весы с size()
параметрами.
Вот код:
package module3;
//Java utilities libraries
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
//Processing library
import processing.core.PApplet;
//Unfolding libraries
import de.fhpotsdam.unfolding.UnfoldingMap;
import de.fhpotsdam.unfolding.marker.Marker;
import de.fhpotsdam.unfolding.data.PointFeature;
import de.fhpotsdam.unfolding.marker.SimplePointMarker;
import de.fhpotsdam.unfolding.providers.Google;
import de.fhpotsdam.unfolding.providers.MBTilesMapProvider;
import de.fhpotsdam.unfolding.utils.MapUtils;
//Parsing library
import parsing.ParseFeed;
public class EarthquakeCityMap extends PApplet {
// Less than this threshold is a light earthquake
public static final float THRESHOLD_MODERATE = 5;
// Less than this threshold is a minor earthquake
public static final float THRESHOLD_LIGHT = 4;
// This is where to find the local tiles, for working without an
// Internet connection
public static String mbTilesString = "blankLight-1-3.mbtiles";
// The map
private UnfoldingMap map;
//feed with magnitude 2.5+ Earthquakes
private String earthquakesURLweek = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_week.atom";
private String earthquakesURLday = "https://earthquake.usgs.gov/earthquakes/feed/v1.0/summary/2.5_day.atom";
public void setup() {
size(400, 400, "processing.opengl.PGraphics3D");
background(99);
map = new UnfoldingMap(this, 50, 50, 1100, 700, new Google.GoogleMapProvider());
map.zoomToLevel(2);
MapUtils.createDefaultEventDispatcher(this, map);
//List of markers to be added to map
List<Marker> markers = new ArrayList<Marker>();
//Use parser to collect properties for each earthquake
//PointFeatures have a getLocation method
List<PointFeature> earthquakes = ParseFeed.parseEarthquake(this, earthquakesURLweek);
// for each earthqauke feature, create a custom marker and add it
// to the list.
for (PointFeature quake : earthquakes){
Marker quakeMark = createMarker(quake);
markers.add(quakeMark);
Map<String, Object> properties = quakeMark.getProperties();
}
// Add the markers to the map so that they are displayed
map.addMarkers(markers);
}
/**
* A helper method to style markers based on features (magnitude, depth,
* etc) of an earthquake.
* @param feature A PointFeature object representing a single earthquake.
* @return
*/
private SimplePointMarker createMarker(PointFeature feature){
// Create a new SimplePointMarker at the location given by the PointFeature
SimplePointMarker marker = new SimplePointMarker(feature.getLocation(), feature.getProperties());
Object magObj = feature.getProperty("magnitude");
Object ageObj = marker.getProperty("days ellapsed");
float mag = Float.parseFloat(magObj.toString());
int age = (int) ageObj;
//Set processing color and alpha data, for setting marker colors
//below.
int alpha = 255 - (age * 255 / 7);
int yellow = color(255, 255, 0, alpha);
int red = color(255, 0, 0, alpha);
int green = color(0, 255, 0, alpha);
// Style markers based on earthquake magnitude
if (mag < THRESHOLD_LIGHT){
marker.setColor(green);
}
if (mag >= THRESHOLD_LIGHT && mag < THRESHOLD_MODERATE){
marker.setColor(yellow);
}
if (mag >= THRESHOLD_MODERATE){
marker.setColor(red);
}
//set radius of marker based on quake magnitude
float radius = (float) (mag * 3.5);
marker.setStrokeColor(color(50,15));
marker.setRadius(radius);
return marker;
}
public void draw() {
map.draw();
addKey();
}
Самый простой вариант будет использовать устаревшую версию обработки, раскладывание по- прежнему поддерживает как раскладывание 0.9.6 (для обработки 2.2.1) .
Так как вы используете затмение вы можете скомпилировать новую версию может работать для вас. (Я не буду замечать есть несколько обновлений незначительные с прошлого года, но не релиз). Для обновления через затмение вы можете:
- получить репо (если вы на системе Unix (Linux / OSX) , вы , возможно , уже
git
установлены:git clone https://github.com/tillnagel/unfolding
: Таким образом , вы всегда можете тянуть последние обновления и перестроения легко, в противном случае загрузки Zip, распаковать, и т.д.) - импортировать проект в затмении (через Импортировать существующий проект)
- Перетащите build.xml из проекта в Ant View и выбрать цель для компиляции.
main
будет собирать все из них в том числе обработки обертке.
Если вы хотите использовать только командную строку:
- Установка Ant (если это уже не в вашей системе) и добавить его в
PATH
переменной окружения (например , для проверкиecho $PATH
на Unix илиecho %PATH%
на Windows , а также обеспечить папку , в которой муравей живет в списке, если не добавил его) - Клон / скачать репо
- запустить муравьев (например ,
ant unfolding_processing
для создания обработки обертки или только простоant
(который по умолчанию вmain
целевом строительстве все)
Я могу подтвердить вручную компиляции последнюю версию с GitHub работ с 3.4 Обработка
Я загрузил обработки обертку здесь : Надеюсь , вы можете перетащить файл .jar на верхней части вашего проекта Eclipse.