PPS*_*ein 12 android google-maps
现在出现了我无法从URL获取并在Google地图中显示自定义图标的问题.关于Google的示例,只有图标才会显示在Google地图中.但我想知道的是从URL显示图标.
private Marker melbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.snippet("Population: 4,137,400")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
Run Code Online (Sandbox Code Playgroud)
这是我的编码.
if(c != null){
if(c.moveToFirst()){
do {
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(Double.parseDouble(c.getString(2)), Double.parseDouble(c.getString(3))))
.title(c.getString(0))
.icon(BitmapDescriptorFactory.fromBitmap(bmp))
.snippet(c.getString(1)));
} while(c.moveToNext());
}
}
Run Code Online (Sandbox Code Playgroud)
Rag*_*dan 12
你可以下载Bitmap as
Bitmap bmp = BitmapFactory.decodeStream(myurl.openConnection().getInputStream());
Run Code Online (Sandbox Code Playgroud)
使用线程来获取位图
然后
.icon(BitmapDescriptorFactory.fromBitmap(bmp)));
Run Code Online (Sandbox Code Playgroud)
从你的评论中得到 NetworkOnMainThreadException
所以使用一个线程.
Thread thread = new Thread(new Runnable(){
@Override
public void run(){
URL url ;
try {
url = new URL("myurl");
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
runOnUiThread(new Runnable() {
@Override
public void run() {
source = mMap.addMarker(new MarkerOptions()
.position(sc)
.title("MyHome")
.snippet("Bangalore")
.icon(BitmapDescriptorFactory.fromResource(bmp)));
}
});
}
});
thread.start();
Run Code Online (Sandbox Code Playgroud)
您无法从后台线程更新ui.用runOnUiThread.
使用asycntask
让你的asycn成为你活动的内在阶级.将Bitmap声明为类变量.
class TheTask extends AsyncTask <Void,Void,Void>
{
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub
super.onPreExecute();
}
@Override
protected Void doInBackground(Void... params) {
URL url ;
try {
url = new URL("myurl");
bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
source = mMap.addMarker(new MarkerOptions()
.position(sc)
.title("MyHome")
.snippet("Bangalore")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.pin)));
}
}
Run Code Online (Sandbox Code Playgroud)
我用Ion来加载图像.这是一个非常好的图书馆.
从url设置标记图标非常简单.
try {
Bitmap bmImg = Ion.with(context)
.load("http://example.com").asBitmap().get();
mMap.addMarker(new MarkerOptions().position(latlng)
.icon(BitmapDescriptorFactory.fromBitmap(bmImg)));
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
希望这个帮助
| 归档时间: |
|
| 查看次数: |
17081 次 |
| 最近记录: |