来自URL的Android google mapv2图标 [英] Android google mapv2 icon from URL
问题描述
现在遇到了问题,我无法从URL中获取自定义图标并将其显示在Google地图中。关于谷歌的例子,只有图标才能显示在谷歌地图上。但是我想知道的是从URL显示图标。
private Marker melbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title(Melbourne)
.snippet(Population:4,137,400)
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)) );
以下是我的编码。
<$ p如果(c!= null){
if(c.moveToFirst()){
do {
googleMap.addMarker(new MarkerOptions()$ b)$ p> $ b .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());
$ div $解析方案
你可以下载Bitmap作为
位图bmp = BitmapFactory.decodeStream(myurl.openConnection()。getInputStream());
使用线程获取位图
然后
.icon(BitmapDescriptorFactory.fromBitmap(bmp)));
从您的评论中得到 NetworkOnMainThreadException
所以使用一个线程。
线程线程= 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();
您无法从后台线程更新ui。使用 runOnUiThread
。
使用asycntask
让您的asycn成为您活动的内在阶层。声明位图为类变量。
class TheTask扩展AsyncTask< Void,Void,Void>
{
@Override
protected void onPreExecute(){
// TODO自动生成的方法存根
super.onPreExecute();
@Override
protected void doInBackground(Void ... params){
URL url;
尝试{
url =新网址(myurl);
bmp = BitmapFactory.decodeStream(url.openConnection()。getInputStream());
} catch(Exception e){
e.printStackTrace();
}
返回null;
@Override
保护无效onPostExecute(Void结果){
super.onPostExecute(result);
source = mMap.addMarker(new MarkerOptions()
.position(sc)
.title(MyHome)
.snippet(Bangalore)
。图标(BitmapDescriptorFactory.fromResource(R.drawable.pin)));
}
}
Now got problem that I cannot fetch and display custom icon into Google Maps from URL. Regarding Google's example, only icon to be displayed into Google map. But what I want to know is to display icon from URL.
private Marker melbourne = mMap.addMarker(new MarkerOptions()
.position(MELBOURNE)
.title("Melbourne")
.snippet("Population: 4,137,400")
.icon(BitmapDescriptorFactory.fromResource(R.drawable.arrow)));
and here is my coding.
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());
}
}
You can download Bitmap as
Bitmap bmp = BitmapFactory.decodeStream(myurl.openConnection().getInputStream());
Used a thread to get the bitmap
Then
.icon(BitmapDescriptorFactory.fromBitmap(bmp)));
From your comments you get NetworkOnMainThreadException
So use a thread.
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();
You can't update ui from a background thread. use runOnUiThread
.
Using asycntask
Make your asycn taks an inner class of your activity. Declare Bitmap as a class variable.
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)));
}
}
这篇关于来自URL的Android google mapv2图标的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!