nutiteq / hellomap3d Goto Github PK
View Code? Open in Web Editor NEWAndroid 3D map with Nutiteq SDK 2.x samples
Home Page: http://www.nutiteq.com
License: MIT License
Android 3D map with Nutiteq SDK 2.x samples
Home Page: http://www.nutiteq.com
License: MIT License
We got the following exception in google play:
android.database.sqlite.SQLiteException: unable to close due to unfinalised statements
at android.database.sqlite.SQLiteDatabase.dbclose(Native Method)
at android.database.sqlite.SQLiteDatabase.onAllReferencesReleased(SQLiteDatabase.java:323)
at android.database.sqlite.SQLiteDatabase.close(SQLiteDatabase.java:884)
at com.nutiteq.db.PersistentCacheDbHelper.closeDb(PersistentCacheDbHelper.java:103)
at com.nutiteq.cache.PersistentCache.closeDb(PersistentCache.java:134)
at com.nutiteq.MapView.stopMapping(MapView.java:212)
at com.tgt.transport.ui.MapFragment.onStop(MapFragment.java:724)
at android.support.v4.app.Fragment.performStop(Fragment.java:1651)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:979)
at android.support.v4.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1201)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:639)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
at android.os.Handler.handleCallback(Handler.java:587)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3683)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
at dalvik.system.NativeStart.main(Native Method)
Device: n900
Nutiteq SDK 2.2.0
We know that n900 it's actually not 'native' android device. It's error device specific or not?
I use modified HelloMap3D project (HelloMap3DActivity.java):
http://pastebin.com/uVDdm89m
I add line which consisting of 515 dots to geometry layer. Map slows down and I can't do anything.
My test device HTC One V (android 4.0.3).
It works much(!) better on android emulator (android 4.2.2).
Show old->new for following sample snippets.
// CODE SNIPPETS THAT USE THE MGMAPS LIBRARY
// Initilize the map
private void initializeMap() {
this.theMap = new BasicMapComponent(this.mgmapsLicenseKey,
new AppContext(this),
1,
1,
new WgsPoint(0, 0),
12);
this.theMap.setMap(new CloudMade(this.cloudMadeApiKey, "", 256, 1));
this.theMap.setPanningStrategy(new ThreadDrivenPanning());
this.theMap.setControlKeysHandler(new AndroidKeysHandler());
this.theMap.setTouchClickTolerance(200);
this.theMap.setNetworkCache(this.getCachingChain());
this.theMap.startMapping();
}
// Three TYPES OF MAPS
public void setMapOnLine() {
this.getTheMap().setMap(new CloudMade(this.cloudMadeApiKey, "", 256, 1));
}
public void setMapOnBoard() {
this.getTheMap().setMap(new JaredOpenStreetMap(new StringCopyright("CC-By-SA by OpenStreetMap"), "/res/raw/", 256, 12, 15));
}
// Additionale map for the new app
public void setMapTerrain() {
this.getTheMap().setMap(new GoogleStaticMap("dummy", 256, 0, 19, GoogleStaticMap.IMAGE_FORMAT_PNG_32, GoogleStaticMap.MAP_TYPE_TERRAIN, true));
}
// Initialize chache for the MAP CACHING
private void initializeCache (){
if(cacheDir.exists()){
StatFs statFs = new StatFs(cacheDir.getAbsolutePath());
int freespace = statFs.getAvailableBlocks() * statFs.getBlockSize();
Log.debug("Free space of " + cacheDir.getAbsolutePath() + " is " + freespace);
int cacheSizeWish = 1000 * 1024 * 1024; // 1 GB
// do not take more than 50% of free space for caches
int cacheSize = (cacheSizeWish * 2) >= freespace ? (int) freespace / 2 : cacheSizeWish;
Log.debug("File cache set to " + cacheSize);
final AndroidFileSystemCache fileSystemCache = new AndroidFileSystemCache(this, "network_cache", cacheDir, cacheSize);
this.setCachingChain(new CachingChain(new Cache[] {
// memoryCache,
fileSystemCache }));
}else{
this.setCachingChain(new CachingChain(new Cache[] {memoryCache}));
}
}
// This is the class used for the ROUTING
public class RoutingStarter implements Runnable {
private final ActivityMapSinglePoi nutiteqRouteWaiter;
public RoutingStarter(final ActivityMapSinglePoi activityMapSinglePoi) {
this.nutiteqRouteWaiter = activityMapSinglePoi;
}
public void run() {
new CloudMadeDirections(nutiteqRouteWaiter,
nutiteqRouteWaiter.getStartCoordinates(),
nutiteqRouteWaiter.getEndCoordinates(),
"Car",
CloudMadeDirections.ROUTE_TYPE_MODIFIER_SHORTEST ,
"92dccbb97dfc4c298c2405f6ceda0c40",
""
).execute();
}
}
// This is for USER POSITION
private BasicMapComponent mapComponent;
private Place userPlace;
public void onLocationChanged(Location location) {
// Called when a new location is found by the network location provider.
// makeUseOfNewLocation(location);
this.mapComponent.moveMap(location.getLongitude(), location.getLatitude());
this.mapComponent.removePlace(userPlace);
this.userPlace = new Place(1, "Tu sei qui!", iconYouAreHere, location.getLongitude(), location.getLatitude());
mapComponent.addPlace(userPlace);
((ApplicationContext)context.getApplicationContext()).setUserPosition(location);
}
// ...and at the end a snippet of an ACTIVITY WITH A MAP, including POINTS and LINES
import com.nutiteq.BasicMapComponent;
import com.nutiteq.android.MapView;
import com.nutiteq.components.OnMapElement;
import com.nutiteq.components.Place;
import com.nutiteq.components.WgsPoint;
import com.nutiteq.listeners.OnMapElementListener;
import com.nutiteq.wrappers.Image;
public class ActivityMap extends Activity {
private ManagerData md;
private ApplicationContext appContext;
private Poi[] poisToView;
private Place[] poiPlaces;
private Integer nPoiToViewOnMap;
private MapView mapView;
private BasicMapComponent mapComponent;
private ZoomControls zoomControls;
private Image poiHere;
private WgsPoint position;
private MapState mapState;
private OnMapElementListener OMElementListener;
private ActivityMapSetOfPoi context;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
// ...
OMElementListener = new OnMapElementListener() {
@Override
public void elementLeft(OnMapElement element) {}
@Override
public void elementEntered(OnMapElement element) {}
@Override
public void elementClicked(OnMapElement element) {
if (element instanceof Place) {
Place p = (Place) element;
Poi poiClicked = poisToView[p.getId()];
appContext.setIdPoiSelected(poiClicked.getId());
context.stopMap();
Intent myIntent = new Intent(ActivityMapSetOfPoi.this, ActivityPoiCard.class);
ActivityMapSetOfPoi.this.startActivityForResult(myIntent, 1);
}
}
};
super.onCreate(savedInstanceState);
// ...
poisToView = appContext.getPoisFound();
nPoiToViewOnMap = poisToView.length;
poiPlaces = new Place[nPoiToViewOnMap];
// ...
position = new WgsPoint(((xMax+xMin)/2), ((yMax+yMin)/2));
if (appContext.getMapSetOfPoiState() == null) {
mapState.setMiddlePoint(position);
}
this.startMap();
mapView = new MapView(appContext, mapComponent);
//Add ZoomControls
zoomControls = new ZoomControls(appContext);
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
public void onClick(final View v) {
mapComponent.zoomIn();
}
});
zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
public void onClick(final View v) {
mapComponent.zoomOut();
}
});
RelativeLayout relativeLayout = (RelativeLayout) this.findViewById(R.id.map_container);
relativeLayout.addView(mapView);
//Add Zoom controls View to the RelativeLayout
final RelativeLayout.LayoutParams zoomControlsLayoutParams = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
zoomControlsLayoutParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
zoomControlsLayoutParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
relativeLayout.addView(zoomControls, zoomControlsLayoutParams);
}
private void startMap() {
mapComponent = appContext.getTheMap();
// mapComponent.setMiddlePoint(mapState.getMiddlePoint());
mapComponent.moveMap(mapState.getMiddlePoint());
mapComponent.setZoom(mapState.getZoomLevel());
if (poiPlaces.length > 0)
mapComponent.addPlaces(poiPlaces);
mapComponent.setOnMapElementListener(OMElementListener);
}
public void stopMap() {
mapComponent.setOnMapElementListener(null);
mapComponent.removeAllPlaces();
mapState.setZoomLevel(mapComponent.getZoom());
mapState.setMiddlePoint(mapComponent.getMiddlePoint());
appContext.setMapSetOfPoiState(mapState);
mapComponent = null;
}
private Place getPlaceFromPoi(Poi poi, int idPoi) {
try {
poiHere = Image.createImage("/res/drawable/"+md.getCategoryMapIconFilenameByCode(poi.getCategory().getName())+".png");
} catch (IOException e) {
e.printStackTrace();
}
return new Place(idPoi, poi.getName().getText(appContext.getLanguage()), poiHere, poi.getGeom());
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_principale_mappa, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.item_map_on_line: appContext.setMapOnLine();
break;
case R.id.item_map_on_board: appContext.setMapOnBoard();
break;
}
return true;
}
@Override
protected void onDestroy() {
super.onDestroy();
this.stopMap();
appContext.setMapSetOfPoiState(null);
if (mapView != null) {
mapView.clean();
mapView = null;
}
}
Quoting from http://nutiteq.github.io/hellomap3d/javadoc/:
"A raster data source that uses the map bundled in the /res/raw/ folder as a source. The request are generated based on resourceTemplate that may contain various tags. The following tags are supported: zoom, x, y, xflipped, yflipped, quadkey For example if, if resourceTemplate = "t{zoom}{x}{y}.png", then the result (for root tile) will be "/res/raw/t0_0_0.png". "
Actually the resourceTemplate should not include the file type ".png". This would cause the tiles to not be found.
Correct javadoc:
"A raster data source that uses the map bundled in the /res/raw/ folder as a source. The request are generated based on resourceTemplate that may contain various tags. The following tags are supported: zoom, x, y, xflipped, yflipped, quadkey For example if, if resourceTemplate = "t{zoom}{x}{y}", then the result (for root tile) will be "/res/raw/t0_0_0.png". "
I have mad a demo app. Yes, it works all right. But when I put map into ScrollView container then it behaves a strange way like when I touch map for navigate, it is unexpectedly zooming and all that.
It is only happen when I put map into scrollview container. In another view it works all right.
I want to use it with scrollview container but I can't because of this issue.
We got the following exception in google play:
java.lang.NullPointerException
at com.nutiteq.MapView.onTouchEvent(MapView.java:227)
at android.view.View.dispatchTouchEvent(View.java:7337)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2386)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2386)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2386)
at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2159)
at android.view.ViewGroup.cancelTouchTarget(ViewGroup.java:2326)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3884)
at android.view.ViewGroup.removeViewInternal(ViewGroup.java:3866)
at android.view.ViewGroup.removeView(ViewGroup.java:3798)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1025)
at android.support.v4.app.FragmentManagerImpl.removeFragment(FragmentManager.java:1201)
at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:639)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1460)
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4898)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
at dalvik.system.NativeStart.main(Native Method)
Devices: Galaxy S III (m0), Galaxy Tab 7.0 Plus (GT-P6200), e1809c_v75_jdt1
Nutiteq SDK 2.2.1
Hello.
I want to use nutiteq to show images in mbtiles without using a map as base layer.
How to control of the map display area.
After updating to a new version of sdk (nutiteq-3dsdk-build341-232RC) we get strange errors, like that:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'htc_europe/htc_runnymede/runnymede:4.4.2/KOT49H/87995:user/release-keys'
Revision: '2'
pid: 5137, tid: 5137, name: m.tgt.transport >>> com.tgt.transport <<<
signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
r0 fffffffc r1 be910370 r2 00000010 r3 ffffffff
r4 01db0788 r5 00000001 r6 01db079c r7 000000fc
r8 00000000 r9 00000000 sl 00000000 fp ffffffff
ip 00000000 sp be910330 lr 4013fb75 pc 400b06a8 cpsr 20010010
d0 408000003d56d531 d1 000000003d56d531
d2 0000000000000006 d3 0000000000000041
d4 0000000000000000 d5 0000000000000000
d6 0000000000000000 d7 0000000000000000
d8 0000000000000000 d9 7ff800003f000000
d10 3fe0000000000000 d11 3ff3acc09f912522
d12 415deb3851a0ebb6 d13 3fe921fb54442d18
d14 0000000000000000 d15 0000000000000000
d16 4022ead9117221ed d17 40565ddf80000000
d18 0018001700150016 d19 0019001a001a0019
d20 3f80000000000000 d21 0000000000000000
d22 0301030203020301 d23 0306030503040303
d24 001e001d001c001b d25 0020001f001d001e
d26 0000000000000000 d27 0000000000000000
d28 031e031d031c031b d29 0320031f031d031e
d30 0020002000200020 d31 0000000000000000
scr 80000013
backtrace:
#00 pc 000296a8 /system/lib/libc.so (epoll_wait+12)
#01 pc 00012b71 /system/lib/libutils.so (android::Looper::pollInner(int)+100)
#02 pc 00012e05 /system/lib/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+40)
#03 pc 00081c5d /system/lib/libandroid_runtime.so (android::NativeMessageQueue::pollOnce(_JNIEnv*, int)+24)
#04 pc 0001f4ec /system/lib/libdvm.so (dvmPlatformInvoke+116)
#05 pc 0005e561 /system/lib/libdvm.so (dvmCallJNIMethod(unsigned int const*, JValue*, Method const*, Thread*)+172)
#06 pc 00028960 /system/lib/libdvm.so
#07 pc 000304b8 /system/lib/libdvm.so (dvmMterpStd(Thread*)+68)
#08 pc 0002d1e0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#09 pc 000790ad /system/lib/libdvm.so (dvmInvokeMethod(Object*, Method const*, ArrayObject*, ArrayObject*, ClassObject*, bool)+884)
#10 pc 00085e51 /system/lib/libdvm.so
#11 pc 00028960 /system/lib/libdvm.so
#12 pc 000304b8 /system/lib/libdvm.so (dvmMterpStd(Thread*)+68)
#13 pc 0002d1e0 /system/lib/libdvm.so (dvmInterpret(Thread*, Method const*, JValue*)+184)
#14 pc 000795e3 /system/lib/libdvm.so (dvmCallMethodV(Thread*, Method const*, Object*, bool, JValue*, std::__va_list)+490)
#15 pc 00055e33 /system/lib/libdvm.so
#16 pc 0005515b /system/lib/libandroid_runtime.so
#17 pc 00055fef /system/lib/libandroid_runtime.so (android::AndroidRuntime::start(char const*, char const*)+278)
#18 pc 00000e33 /system/bin/app_process
#19 pc 0000e6a3 /system/lib/libc.so (__libc_init+58)
#20 pc 00000f98 /system/bin/app_process
code around pc:
400b0688 e1a0700c e3700a01 912fff1e e2600000
400b0698 ea0093ef e1a0c007 e3a070fc ef000000
400b06a8 e1a0700c e3700a01 912fff1e e2600000
400b06b8 ea0093e7 e1a0c007 e3a07f4f ef000000
400b06c8 e1a0700c e3700a01 912fff1e e2600000
400b06d8 ea0093df e1a0c007 e59f7014 ef000000
400b06e8 e1a0700c e3700a01 912fff1e e2600000
400b06f8 ea0093d7 0000013d e1a0c007 e59f7014
400b0708 ef000000 e1a0700c e3700a01 912fff1e
400b0718 e2600000 ea0093ce 0000013e e1a0c007
400b0728 e3a070a8 ef000000 e1a0700c e3700a01
400b0738 912fff1e e2600000 ea0093c5 e1a0c007
400b0748 e3a07f59 ef000000 e1a0700c e3700a01
400b0758 912fff1e e2600000 ea0093bd e1a0c007
400b0768 e59f7014 ef000000 e1a0700c e3700a01
400b0778 912fff1e e2600000 ea0093b5 000f0005
code around lr:
4013fb54 f1049202 46100614 fcc0f7fe a910462b
4013fb64 65e72210 6b202501 502df884 e8daf7f8
4013fb74 702df884 46304681 e820f7f8 f2c045b9
4013fb84 bf08810f 0802f06f 808cf040 f04f6a20
4013fb94 f06f32ff e9c44300 28002318 ad08d046
4013fba4 f104af0a f04f0b18 e0310a01 3008f8d9
4013fbb4 0801f06f b12b602b f852681a 44180c0c
4013fbc4 f9c4f7fb 300cf8d9 22012100 603b4658
4013fbd4 fc6ef7fe a02cf884 f7f74630 6828eff6
4013fbe4 68024639 47986893 4629682b 6818b12b
4013fbf4 0c0cf850 f7fb4418 4630f9ff efdef7f7
4013fc04 f04f6a21 f8840c00 2900c02c 80aff000
4013fc14 f7fd2001 f8d4faa5 e9d9901c 42902300
4013fc24 0e03eb71 dac14629 2318e9c4 f7f74630
4013fc34 6d26efcc 2500b396 b008f8dd e003462f
4013fc44 35016d21 d229428d 46294658 fa62f7fe
Devices: HTC Sensation XL with Beats - Android 4.4.2,
LG G2 (g2) - Android 4.4.2,
Galaxy S2 Plus (s2ve) - Android 4.4.2,
Nexus 7 (deb) - Android 4.4.2
Seems like it happens when MapView using mapsforge layer as base layer and hardware acceleration isn't available on that device. But this issue may not be related with map sdk.
Unfortunately we don't have listed devices to check issue.
I could not clone your git repository (publickey issue) - so I did following:
It compiles and runs but produces a blank map - no tile in background or anything. There are no exception in LogCat. What cold be causing this behavior ?
If you need anymore information please let me know.
thanks,
-Sanjay
AS 0.5.2 & 0.5.8: Failed to refresh Gradle project 'HelloMap3D'
Error:You are using an unsupported version of Gradle. Please use version 1.10.
Please point to a supported Gradle version in the project's Gradle settings or in the project's Gradle wrapper (if applicable.)
Any suggestions?
Please add a sample with Fragments, where one fragment is map, and another data related to the visible map (like details of clicked object). Saving map state during orientation changes is quite specific there.
Hi Dev Team... I am having problems with the onClickListener if I combine MarkerLayer and GeometryLayer. Even though I clicked on the marker I created, Still the polygon is selected....
Tried adding geo layer first then marker layer and vice versa and still getting the same results....
mapView.getLayers().addLayer(geomLayer);
mapView.getLayers().addLayer(markerLayer);
GeometryLayer is always selected even when I click anywhere on the map....
Any suggestions?
it would be great if MarkerLayer has zoom ranges like raster layers
I making the offlinemap(m.mbtiles) by Mobile Atlas Creator๏ผMOBAC).
in Android I use MBTilesMapLayer to load the offlinemap(m.mbtiles)
new MBTilesMapLayer(new EPSG3857(), 3, 17, mapFilePath.hashCode(), mMapFilePath, this);
// Activate some mapview options to make it smoother - optional
mapView.getOptions().setPreloading(true);
mapView.getOptions().setSeamlessHorizontalPan(true);
mapView.getOptions().setTileFading(true);
mapView.getOptions().setKineticPanning(true);
mapView.getOptions().setDoubleClickZoomIn(true);
mapView.getOptions().setDualClickZoomOut(true);
// set sky bitmap - optional, default - white
mapView.getOptions().setSkyDrawMode(Options.DRAW_BITMAP);
mapView.getOptions().setSkyOffset(4.86f);
mapView.getOptions().setSkyBitmap(UnscaledBitmapLoader.decodeResource(getResources(), resUtil.getDrawableId("sky_small")));
// Map background, visible if no map tiles loaded - optional, default -
// white
mapView.getOptions().setBackgroundPlaneDrawMode(Options.DRAW_BITMAP);
mapView.getOptions().setBackgroundPlaneBitmap(UnscaledBitmapLoader.decodeResource(getResources(), resUtil.getDrawableId("background_plane")));
mapView.getOptions().setClearColor(Color.WHITE);
// configure texture caching - optional, suggested
mapView.getOptions().setTextureMemoryCacheSize(15 * 1024 * 1024);
mapView.getOptions().setCompressedMemoryCacheSize(8 * 1024 * 1024);
mapView.getOptions().setGeneralPanningMode(true);
java.lang.OutOfMemoryError
at android.graphics.BitmapFactory.nativeDecodeByteArray(Native Method)
at android.graphics.BitmapFactory.decodeByteArray(BitmapFactory.java:426)
at com.nutiteq.renderers.RasterCullThread.d(RasterCullThread.java:396)
at com.nutiteq.renderers.RasterCullThread.run(RasterCullThread.java:132)
Helpโฆโฆ
what need to do some free memory operation When the Activity destroy or the Fragment onDestroyView
After some time of using map I got out of memory error
full log: http://pastebin.com/BSTA6Lfc
When trying to add WMS layer as described here: https://github.com/nutiteq/hellomap3d/wiki/WMS-map-layer
WmsLayer file:
is trying to import com.nutiteq.utils.TileUtils which doesn't seem to exists in 1.0.1R SDK.
We got user bug report about flickering tiles:
video link: https://docs.google.com/file/d/0B7JpsJ2ZKswOMGdXYmZZSHhOeGc
Device: Jiayu G4
Android version: Android 4.2.1
Nutiteq SDK 2.3.0
User reported that before application update (2.2.1 - > 2.3.0) this effect was not observed.
It looks like regression #6
HelloMap3D must build with proguard enabled
error log:
http://pastebin.com/FXZ3xCWP
Hello,
I try to use Xamarin component version of Nutiteq SDK (v1.0.1), but in medium - big zoom level, SDK fails to load lower latutude tiles.
I sent sample:
How can I avoid this?
Application is sample application which comes with Component, and tested device is HTC J /w Android 4.0.3.
Regards,
Ko-hei
sorry just to be sure - the sourcecode released in this repository is all MIT licensed?
I ask because the page states it for 'Hello Map 3D' which could be read as only for HelloMap3D which is only one project within this repository
Add 2 points on map:
min box (min lat / lon)
max box (max lat / lon)
final Projection p = new EPSG3857();
GeometryLayer l = new GeometryLayer(p);
final double[] bounds = new double[] { 56.877323, 65.283986, 57.403498, 65.974421 };
final MapPos minBox = p.fromWgs84(bounds[1], bounds[0]);
final MapPos maxBox = p.fromWgs84(bounds[3], bounds[2]);
l.add(new Point(minBox, new DefaultLabel("minBox"), PointStyle.builder().setColor(Color.BLUE).build(), null));
l.add(new Point(maxBox, new DefaultLabel("maxBox"), PointStyle.builder().setColor(Color.RED).build(), null));
mapView_.getLayers().addLayer(l);
Everything looks alright:
https://drive.google.com/file/d/0B7JpsJ2ZKswOM0ZOUEVYU2J6SWM/edit?usp=sharing
But when I try to create bounding box with that map points:
mapView_.getConstraints().setMapBounds(new Bounds(minBox.x, minBox.y, maxBox.x, maxBox.y));
something going wrong:
https://drive.google.com/file/d/0B7JpsJ2ZKswORVhSNWNRRUttWXc/edit?usp=sharing
I was just checking the route draw from the new version. But it seems we cannot draw route as it was done in previous version.
Can we draw route by using nutiteq 3D latest version.?
User with Samsung Galaxy Duos GT-i8552 have similar issue like #35
Base map layer (mbtiles / tms) not visible (white background), vector elements are working.
processor: Qualcomm Snapdragon 200 MSM8225Q / ARM Cortex-A5
nutiteq sdk 2.3.1
android 4.1.2
How can I get this working in eclipse? Also, will this show any basemap and layers as 3d?
Hello.
I've created a thread on Stackoverflow and I've been in contact with JaakL as he's trying to solve my problem.
Link for the stackoverflow thread : http://stackoverflow.com/questions/23861670/importing-mbfiles-extension-files-for-android-with-nutiteq/23864784?noredirect=1#comment37001857_23864784
Dropbox link with the project code : https://www.dropbox.com/s/9io1o6yrjfcbi1e/MyApplication5.zip
I'm also sending a video for each problem I stated on stackoverflow.
A video showing I can never see the whole map, I don't know why but some parts are cut out.
https://www.dropbox.com/s/s7xdxjcui05kf6k/VID_20140603_202033502.mp4
A video showing that sometimes when I drag the map trying to check certain parts of it the whole map crashes and all I get is a blank screen.
https://www.dropbox.com/s/n9hryjrb6r3zk9f/VID_20140603_202440897.mp4
Thank you so much for all of your help so far.
hi!
so i followed the GPSAnimation tutorial and got the pulsing circle working just great. i also have a bitmap which i draw at the center of the pulsing circle as a Point in the Geometry Layer.
my problem is: the central bitmap is "below" the pulsing circle.
my questions:
1 how can i go about making the Geometry Layer go "above" the ?OpenGL Layer? ?
2 is the "Point in Geometry Layer approach" the recommended approach for drawing a bitmap overlay?
thanks!
I recently checked out the latest version of the HelloMap3D example; however, when I try to run it, the log shows:
"VFY: unable to find class referenced in signature (Lcom/nutiteq/MapView;)"
My project appears to correctly reference all the necessary libraries as it does successfully build. Is there a step that I am missing?
Any help would be appreciated. Thanks!
Here is the entire log for reference:
08-08 08:25:40.028: W/dalvikvm(28321): VFY: unable to find class referenced in signature (Lcom/nutiteq/MapView;)
08-08 08:25:40.028: I/dalvikvm(28321): Could not find method com.nutiteq.MapView.getLayers, referenced from method com.nutiteq.hellomap.HelloMap3DActivity.initGps
08-08 08:25:40.028: W/dalvikvm(28321): VFY: unable to resolve virtual method 13: Lcom/nutiteq/MapView;.getLayers ()Lcom/nutiteq/layers/Layers;
08-08 08:25:40.028: D/dalvikvm(28321): VFY: replacing opcode 0x6e at 0x0002
08-08 08:25:40.036: I/dalvikvm(28321): Could not find method com.nutiteq.log.Log.enableAll, referenced from method com.nutiteq.hellomap.HelloMap3DActivity.onCreate
08-08 08:25:40.036: W/dalvikvm(28321): VFY: unable to resolve static method 85: Lcom/nutiteq/log/Log;.enableAll ()V
08-08 08:25:40.036: D/dalvikvm(28321): VFY: replacing opcode 0x71 at 0x0011
08-08 08:25:40.036: I/dalvikvm(28321): Could not find method com.nutiteq.log.Log.debug, referenced from method com.nutiteq.hellomap.HelloMap3DActivity.onRetainNonConfigurationInstance
08-08 08:25:40.036: W/dalvikvm(28321): VFY: unable to resolve static method 84: Lcom/nutiteq/log/Log;.debug (Ljava/lang/String;)V
08-08 08:25:40.036: D/dalvikvm(28321): VFY: replacing opcode 0x71 at 0x0002
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x0016 at 0x64 in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x0057 at 0x6e in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x005b at 0x7b in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x0062 at 0x1dc in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x0066 at 0x1f7 in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x0029 at 0x1fd in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:40.044: W/dalvikvm(28321): Unable to resolve superclass of Lcom/nutiteq/hellomap/MyLocationMapEventListener; (45)
08-08 08:25:40.044: W/dalvikvm(28321): Link of class 'Lcom/nutiteq/hellomap/MyLocationMapEventListener;' failed
08-08 08:25:40.044: D/dalvikvm(28321): DexOpt: unable to opt direct call 0x0040 at 0x216 in Lcom/nutiteq/hellomap/HelloMap3DActivity;.onCreate
08-08 08:25:41.310: D/dalvikvm(28321): threadid=1: still suspended after undo (sc=1 dc=1)
08-08 08:26:01.036: D/AndroidRuntime(28321): Shutting down VM
08-08 08:26:01.044: W/dalvikvm(28321): threadid=1: thread exiting with uncaught exception (group=0x41334930)
08-08 08:26:01.193: E/AndroidRuntime(28321): FATAL EXCEPTION: main
08-08 08:26:01.193: E/AndroidRuntime(28321): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.nutiteq.hellomap/com.nutiteq.hellomap.HelloMap3DActivity}: android.view.InflateException: Binary XML file line #7: Error inflating class com.nutiteq.MapView
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2180)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2230)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.ActivityThread.access$600(ActivityThread.java:141)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1234)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.os.Handler.dispatchMessage(Handler.java:99)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.os.Looper.loop(Looper.java:137)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.ActivityThread.main(ActivityThread.java:5041)
08-08 08:26:01.193: E/AndroidRuntime(28321): at java.lang.reflect.Method.invokeNative(Native Method)
08-08 08:26:01.193: E/AndroidRuntime(28321): at java.lang.reflect.Method.invoke(Method.java:511)
08-08 08:26:01.193: E/AndroidRuntime(28321): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
08-08 08:26:01.193: E/AndroidRuntime(28321): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
08-08 08:26:01.193: E/AndroidRuntime(28321): at dalvik.system.NativeStart.main(Native Method)
08-08 08:26:01.193: E/AndroidRuntime(28321): Caused by: android.view.InflateException: Binary XML file line #7: Error inflating class com.nutiteq.MapView
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:698)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
08-08 08:26:01.193: E/AndroidRuntime(28321): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:270)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.Activity.setContentView(Activity.java:1881)
08-08 08:26:01.193: E/AndroidRuntime(28321): at com.nutiteq.hellomap.HelloMap3DActivity.onCreate(HelloMap3DActivity.java:42)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.Activity.performCreate(Activity.java:5104)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2144)
08-08 08:26:01.193: E/AndroidRuntime(28321): ... 11 more
08-08 08:26:01.193: E/AndroidRuntime(28321): Caused by: java.lang.ClassNotFoundException: Didn't find class "com.nutiteq.MapView" on path: /data/app/com.nutiteq.hellomap-2.apk
08-08 08:26:01.193: E/AndroidRuntime(28321): at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:65)
08-08 08:26:01.193: E/AndroidRuntime(28321): at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
08-08 08:26:01.193: E/AndroidRuntime(28321): at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.createView(LayoutInflater.java:552)
08-08 08:26:01.193: E/AndroidRuntime(28321): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:687)
08-08 08:26:01.193: E/AndroidRuntime(28321): ... 21 more
In https://github.com/nutiteq/hellomap3d/wiki/Ogr-layer kml format is supported, but I was not able to use it in my code.
I am able to show shapefile, but if I try to use kml file I obtain OgrLayer: unable to open dataset '/mnt/sdcard/lines.kml'
the file exists on the device and I am able to visualize it in google maps.
How can I use a kml file as a layer?
For some purposes I need to know when user somehow (zoom buttons, touch gesture) changes zoom on the map. Getting these changes in 'onMapMoved' or 'onBackgroundTasksStarted' is not clear way to do that.
I would like to add a GPS Location button that when clicked will go to the current gps location on the map, and also show a Location Animation.
I have not been able to get it working. My layout and code is below:
mapkit_mapview.xml:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/mainView"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<com.nutiteq.MapView
android:id="@+id/mapView"
android:layout_width="fill_parent"
android:layout_height="fill_parent" />
<ZoomControls
android:id="@+id/zoomcontrols"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true" />
<ImageButton
android:id="@+id/my_gps_location"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:src="@android:drawable/ic_menu_mylocation" >
</ImageButton>
</RelativeLayout>
MapActivity.java:
public class MapActivity extends Activity {
private MapView mapView;
private LocationListener locationListener;
private GeometryLayer locationLayer;
private Timer locationTimer;
ImageButton myLocationButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//My location button stuff
ImageButton myLocationButton = (ImageButton)
findViewById(R.id.my_gps_location);
// 1. Create MapView layer for location circle
locationLayer = new
GeometryLayer(mapView.getLayers().getBaseProjection());
mapView.getComponents().layers.addLayer(locationLayer);
// spinner in status bar, for progress indication
requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
setContentView(R.layout.mapkit_mapview);
// enable logging for troubleshooting - optional
Log.enableAll();
Log.setTag("mapkit");
// Get the MapView from the Layout xml - mandatory
mapView = (MapView) findViewById(R.id.mapView);
// Optional, but very useful: restore map state during device rotation,
// it is saved in onRetainNonConfigurationInstance() below
Components retainObject = (Components)
getLastNonConfigurationInstance();
if (retainObject != null) {
// just restore configuration and update listener, skip other initializations
mapView.setComponents(retainObject);
return;
} else {
// 2. create and set MapView components - mandatory
mapView.setComponents(new Components());
}
// Define base layer. Almost all online maps use EPSG3857 projection.
// Use Offline Mapsforge Base Layer Map.
//use built-in render theme
XmlRenderTheme renderTheme = InternalRenderTheme.OSMARENDER;
MapDatabase mapDatabase = new MapDatabase();
mapDatabase.closeFile();
String mapFilePath = Environment.getExternalStorageDirectory().getPath()+ "/newyork.map";
File mapFile = new File(Environment.getExternalStorageDirectory(), "/maps/newyork.map");
FileOpenResult fileOpenResult = mapDatabase.openFile(mapFile);
if (fileOpenResult.isSuccess()) {
Log.debug("MapsforgeRasterDataSource: MapDatabase opened ok: " + mapFilePath);
}
MapsforgeRasterDataSource dataSource = new MapsforgeRasterDataSource(new EPSG3857(), 0, 20, mapFile, mapDatabase, renderTheme, this.getApplication());
RasterLayer mapLayer = new RasterLayer(dataSource, 1044);
mapView.getLayers().setBaseLayer(mapLayer);
adjustMapDpi();
// Create layer for location circle
locationLayer = new GeometryLayer(mapView.getLayers().getBaseProjection());
mapView.getOptions().setRasterTaskPoolSize(4);
// zoom buttons using Android widgets, get the zoomcontrols that were defined
ZoomControls zoomControls = (ZoomControls) findViewById(R.id.zoomcontrols);
// set zoomcontrols listeners to enable zooming
zoomControls.setOnZoomInClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
mapView.zoomIn();
}
});
zoomControls.setOnZoomOutClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
mapView.zoomOut();
}
});
// My Location Stuff
myLocationButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// 2. add GPS My Location functionality as a separate class
final MyLocationCircle locationCircle = new MyLocationCircle(locationLayer);
initGps(locationCircle);
// 3. Run animation to update location circle
locationTimer = new Timer();
locationTimer.scheduleAtFixedRate(new TimerTask() {
@Override
public void run() {
locationCircle.update(mapView.getZoom());
}
}, 0, 50);
} });
}
//Handle device orientation change
@Override
public Object onRetainNonConfigurationInstance() {
Log.debug("onRetainNonConfigurationInstance");
return this.mapView.getComponents();
}
// it is suggested to start and stop mapping in Activity lifecycle methods, as following:
@Override
protected void onStart() {
super.onStart();
//Start the map - mandatory
mapView.startMapping();
}
private void initGps(final MyLocationCircle locationCircle) {
final Projection proj = mapView.getLayers().getBaseLayer().getProjection();
locationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
locationCircle.setLocation(proj, location);
locationCircle.setVisible(true);
// recenter automatically to GPS point
// TODO in real app it can be annoying this way, add extra control that it is done only once
mapView.setFocusPoint(mapView.getLayers().getBaseProjection().fromWgs84(location.getLongitude(), location.getLatitude()));
}
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
Log.debug("GPS onStatusChanged "+provider+" to "+status);
}
@Override
public void onProviderEnabled(String provider) {
Log.debug("GPS onProviderEnabled");
}
@Override
public void onProviderDisabled(String provider) {
Log.debug("GPS onProviderDisabled");
}
};
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
List<String> providers = locationManager.getProviders(true);
for(String provider : providers){
locationManager.requestLocationUpdates(provider, 10000, 100, locationListener);
}
}
@Override
protected void onStop() {
// Stop animation
locationTimer.cancel();
// Remove created layer
mapView.getComponents().layers.removeLayer(locationLayer);
// remove GPS support, otherwise we will leak memory
deinitGps();
mapView.stopMapping();
super.onStop();
}
@Override
protected void onDestroy() {
super.onDestroy();
}
protected void deinitGps() {
// remove listeners from location manager - otherwise we will leak memory
LocationManager locationManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
locationManager.removeUpdates(locationListener);
}
// adjust zooming to DPI, so texts on rasters will be not too small
// useful for non-retina rasters, they would look like "digitally zoomed"
private void adjustMapDpi() {
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
float dpi = metrics.densityDpi;
// following is equal to -log2(dpi / DEFAULT_DPI)
float adjustment = (float) - (Math.log(dpi / DisplayMetrics.DENSITY_HIGH) / Math.log(2));
Log.debug("adjust DPI = "+dpi+" as zoom adjustment = "+adjustment);
mapView.getOptions().setTileZoomLevelBias(adjustment / 2.0f);
}
}
Any help or insight would be greatly appreciated. I really would like to implement this.
Thanks in advance.
Regards,
Radagast
For unknown reason DefaultLabel is not tied with line if I show it programmatically:
I use modified HelloMap3D project (HelloMap3DActivity.java):
http://pastebin.com/uVDdm89m
Steps for reproduce:
code:
mapView.getOptions().setPersistentCachePath(getActivity().getDatabasePath("mapcache").getPath());
stacktrace:
android.database.sqlite.SQLiteException: unable to open database file
at android.database.sqlite.SQLiteDatabase.dbopen(Native Method)
at android.database.sqlite.SQLiteDatabase.(SQLiteDatabase.java:1849)
at android.database.sqlite.SQLiteDatabase.openDatabase(SQLiteDatabase.java:820)
at android.database.sqlite.SQLiteDatabase.openOrCreateDatabase(SQLiteDatabase.java:854)
at com.nutiteq.db.PersistentCacheDbHelper.(PersistentCacheDbHelper.java:34)
at com.nutiteq.cache.PersistentCache.setPath(PersistentCache.java:44)
at com.nutiteq.components.Options.setPersistentCachePath(Options.java:607)
at com.tgt.transport.MapFragment.setupMap(MapFragment.java:298)
app permissions:
android.permission.ACCESS_FINE_LOCATION
android.permission.INTERNET
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE
device:
Samsung Galaxy Ace
sdk:
nutiteq-3d-sdk-2.1.0
We have no further information
Since 2.3 SDK introduced data sources, previous solution https://gist.github.com/nutiteq/6171709 (TmsMapLayerNoCache) is no longer actual (deprecated). Is there good way to use live / refreshable layers now?
Good wiki for start up. I have did all steps to use nutiteq map as described in wikki. In emulator it works. But when I installed it to device it gives me a "Force close error". I'm very stuck in that. I willing to use nutiteq map but I can't.
What I'm doing wrong?
Would it be possible to change the GPS circle to a marker? And how would I go about implementing it?
EDIT: I am using the HelloMap3D project.
If my tiles stored in database with projection EPSG:4326 and I create MBTilesMapLayer with following code:
String dbPath = Environment.getExternalStorageDirectory().getPath() + "/control-room_8_14_4326.mbtiles";
MBTilesMapLayer mapLayer = new MBTilesMapLayer(new EPSG3857(), 10, 14, 0, dbPath, getActivity());
everything alright, it's working. Despite the fact that the projections do not match. But if my tiles in EPSG:3857 projection nothing work.
The same tiles (with EPSG:3857 projection) work fine through TMSMapLayer with projection EPSG:3857:
TMSMapLayer mapLayer = new TMSMapLayer(new EPSG3857(), 10, 14, 0, "http://mysitename/map/", "/", ".png");
here https://groups.google.com/group/nutiteq-dev/attach/511df3e73c49a176/mbtiles.tar?part=4&authuser=0 mbtiles in 3857 and 4326 projections:
control-room_8_14_3857.mbtiles
control-room_8_14_4326.mbtiles
Some bug in the MBTilesMapLayer?
I'm using nutiteq-3dsdk-1.0.0R on Android 4.0.3
I have created a map with a Polygon3DLayer and a NMLModelLayer, which contains a arrow for the GPS position.
I thought i would create the Polygons semi-transparent (setColor in Builder) because i want to see the arrow even if it is inside a building. Unfortunately the Polygons are semi-transparent, but the NML model is invisible. I am using 2.3.0 and the compass and polygon3d example code as template.
We got the following exception in google play:
java.lang.NullPointerException
at com.nutiteq.touchhandlers.a.g(ClickThread.java:284)
at com.nutiteq.touchhandlers.a.run(ClickThread.java:233)
Device: Galaxy S III (m0)
Nutiteq SDK 2.2.0
We have no further information.
Can we use Custom tile source which has non EPSG3857 projection?
This morning I've started my first Android project application experience with maps by using nutiteq api which seems to be useful in order to work with offline maps.
My first development was the "HelloMap3D" project by using eclipse-jee-juno-SR1, Android 4.0.3, and nutiteq-3dsdk-1.0.144pre.jar library
Unfortunately, I got always the same mistake whose prompt text is:
java.lang.NoClassDefFoundError: com.jhlabs.map.proj.ProjectionFactory
at com.nutiteq.projections.Projection
at com.nutiteq.projections.EPSG3857.
at net.ElectroSoftware.hellomap3d.Hellomap3dActivity.onCreate
I've been trying some different solutions such as importing javaproj-1.0.jar library on libs folder, and changing nutiteq library without any succes.
I've been meaning to ask you if you could tell me what can I do for solving this issue.
Beforehand, Thank you so much for helping.
I am building application using Advanced layer features, such as GeoTIFF, MBTiles. I already imported all JNI files and libraries to my project. Indexing files went normal, clean all also normal. But when I am trying to build, it gives me error like this :
"Compile thumb : spatialite <= dxf_load_distinct.c
jni/libspatialite-4.1.0/src/dxf/dxf_load_distinct.c:54:20: fatal error: config.h: No such file or directory
compilation terminated.
make: *** [obj/local/armeabi/objs/spatialite/libspatialite-4.1.0/src/dxf/dxf_load_distinct.o] Error 1
21:14:55 Build Finished (took 1m:5s.694ms)
I uses MinGW as default build. And when I looked into the src folder, it doesnt have file requested (config.h). Please helps
thanks for this awesome awesome library!
i'd like to know if there's a way to set the fling speed. at the moment, the fling decelerates so fast it's pretty much as if there was none...
thanks!
I just downloaded recently snapshot lib and launch application.
Now there is not any vector element shown on map. what happened?
The demo itself is under MIT. That is clear. But some statements in the license section are a bit confusing:
After compiling hellomap3d sample a6ccea8, I notice a refresh problem when zooming in too close to where the animated circle is drawn...I've tested it on Sony Xperia tipo dual.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.