我使用MapsForge 0.8在我的Android应用程序中显示地图.使用在线图块(只是位图而不是可以在运行时渲染器中调整的矢量数据)时,我的Hi分辨率设备上的地图非常小,我无法读取任何内容.
我想缩放地图,我尝试了以下内容:
mapView.getModel().displayModel.setDefaultUserScaleFactor(2.0f);
Run Code Online (Sandbox Code Playgroud)
和:
mapView.getModel().displayModel.setUserScaleFactor(2.0f);
Run Code Online (Sandbox Code Playgroud)
但它没有改变任何东西.
如何让它显示更大的地图?
更新:
我并不是指放大.我的意思是缩放当前的缩放级别,使其在高分辨率设备上可读.想象一下在一个小型智能手机上面的截图 - 它很小.我甚至无法阅读街道名称.
我有一个TextView在我的活动中,我想添加一个阴影.它应该看起来像OsmAnd(100%不透明):
但它看起来像这样:
您可以看到当前阴影模糊并消失.我想要一个坚实,不透明的阴影.但是怎么样?
我目前的代码是:
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/speedTextView"
android:text="25 km/h"
android:textSize="24sp"
android:textStyle="bold"
android:textColor="#000000"
android:shadowColor="#ffffff"
android:shadowDx="0"
android:shadowDy="0"
android:shadowRadius="6"
/>
Run Code Online (Sandbox Code Playgroud) 我使用地图伪造0.5.1库(api参考)我已遵循所有官方说明但我有以下问题:
我已经附上了一个onTouchListener
(org.mapsforge.map.android.view.MapView)MapView类
但是当我尝试调用方法mapView.getProjection()时,我得到错误"无法解析方法getProjection().即使在许多在线示例中调用该方法,也没有在官方api引用或MapView中.class.org.mapsforge.map.android.view.MapView
org.mapsforge.map.android.view.MapView mapView;
mapView.setOnTouchListener(new View.OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent ev) {
int actionType = ev.getAction();
switch (actionType) {
case MotionEvent.ACTION_DOWN:
return false;
case MotionEvent.ACTION_UP:
mapView.getProjection(); // the error is here
return true;
case MotionEvent.ACTION_MOVE:
return false;
}
return false;
}
});
Run Code Online (Sandbox Code Playgroud)
有没有其他方法可以使用mapsforge lib获取分接点的纬度和经度?难道我做错了什么?如果在点击后没有办法获得坐标,我认为图书馆遗漏了一些非常重要的东西.
谢谢
我将开发一个新的Android应用程序,过去我开发了一个应用程序,我使用了Mapsforge,但现在我看到了他们的网站,他们自2013年3月起就没有发布...
你建议我使用什么,Osmdroid或Mapsforge?
提前致谢
我正在使用Mapsforge 0.6.1,我可以通过以下简化示例重现该问题,该示例基本上是本教程的副本:https://github.com/mapsforge/mapsforge/blob/master/docs/Getting-Started -Android-App.md
我做了一些小改动以匹配新版本.
package org.test.mapsforgeexample;
import java.io.File;
import org.mapsforge.core.model.LatLong;
import org.mapsforge.map.android.graphics.AndroidGraphicFactory;
import org.mapsforge.map.android.util.AndroidUtil;
import org.mapsforge.map.android.view.MapView;
import org.mapsforge.map.layer.cache.TileCache;
import org.mapsforge.map.layer.renderer.TileRendererLayer;
import org.mapsforge.map.datastore.MapDataStore;
import org.mapsforge.map.reader.MapFile;
import org.mapsforge.map.rendertheme.InternalRenderTheme;
import android.app.Activity;
import android.os.Bundle;
import android.os.Environment;
public class MainActivity extends Activity {
private static final String MAP_FILE = "berlin.map";
private MapView mapView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
AndroidGraphicFactory.createInstance(this.getApplication());
this.mapView = new MapView(this);
setContentView(this.mapView);
this.mapView.setClickable(true);
this.mapView.getMapScaleBar().setVisible(true);
this.mapView.setBuiltInZoomControls(true);
this.mapView.getMapZoomControls().setZoomLevelMin((byte) 10);
this.mapView.getMapZoomControls().setZoomLevelMax((byte) 20);
TileCache tileCache = AndroidUtil.createTileCache(this, "mapcache",
mapView.getModel().displayModel.getTileSize(), 1f,
this.mapView.getModel().frameBufferModel.getOverdrawFactor());
MapDataStore …Run Code Online (Sandbox Code Playgroud) 我需要在Android Studio应用中使用Mapsforge(离线地图).我导入了这些库:
- mapsforge核-0.4.0.jar
- mapsforge-MAP-0.4.0.jar
- mapsforge-地图Android的0.4.0.jar
- mapsforge地图阅读器 - 0.4.0.jar
- SVG-Android的0.4.0.jar
我在build.gradle中包含了dependecies:
compile fileTree(dir: 'libs', include: ['*.jar'])
Run Code Online (Sandbox Code Playgroud)
这是代码:
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import org.mapsforge.map.android.view.MapView;
public class MapaForgeFragment extends Fragment {
private MapView mapView;
private View view;
public static MapaForgeFragment newInstance() {
MapaForgeFragment fragment = new MapaForgeFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
return fragment;
}
public MapaForgeFragment() {
// Required empty public constructor
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
@Override
public View onCreateView(LayoutInflater …Run Code Online (Sandbox Code Playgroud) 我是mapforge的新手,想要显示我的自定义标记(从sdcard读取)并在mapforge上显示离线map.problem我面临的是不知道如何将我的android.graphics.Bitmap obj转换为org.mapsforge.core.graphics .Bitmap obj
Bitmap userImg = TrafficBeatHelper.getUserImg(context, userId); // get android.graphics.Bitmap file from sdcard
LatLong userLatLong = TrafficBeatHelper.getLatLong(cache.getSharedPrefValue(SharedPrefContstant.USER_CURRENT_LATITUDE),cache.getSharedPrefValue(SharedPrefContstant.USER_CURRENT_LONGITUDE)); // get user location
// Marker userImgMarker = new Marker(userLatLong, userImg, 0, 0);
Run Code Online (Sandbox Code Playgroud)
任何人都有任何其他选择,请提前分享txs.
我正在使用MapsForge最新分支(master),我想实现Marker的onTap事件.我认为它可能在0.3.0,但我不能使用0.3.0,因为我在地图上为每个标记使用不同的Drawable.
ArrayList<Monument> monuments = getMonuments();
mListOverlay = new ListOverlay();
ArrayList<OverlayItem> markers = new ArrayList<OverlayItem>();
for(Monument m : monuments){
GeoPoint gp = new GeoPoint(m.getLat(), m.getLon());
Marker m = createCustomMarker(R.drawable.marker, gp, p.getNumber()));
markers.add(m);
}
mListOverlay.getOverlayItems().addAll(markers);
mMapView.getOverlays().add(mListOverlay);
Run Code Online (Sandbox Code Playgroud)
"createCustomMarker"返回一个标记,该标记使用带有数字的Drawable.
任何人都知道如何轻敲"m"的行为?
记住:分公司高手!不是0.3.0 !!
谢谢