2015-08-27 29 views
0

我發送從我的服務器收到的經緯度,並將它們傳遞給broadcastreceiver以繪製標記並根據從服務器接收到的更新不斷更新它的位置。位置更新從另一個設備來和我追蹤設備,並顯示它在我的應用程序的位置如下:在Bradcast接收器中動態顯示Android繪圖標記

@Override 
     public void onMessageReceived(String from, Bundle data) { 
      if (data != null && !data.isEmpty()) { 
      String lati = data.getString("lati"); 
      String longi = data.getString("longi"); 
       Intent mIntent = new Intent(); 
       mIntent.putExtra(LOCATION, lati + "," + longi); 
       mIntent.setAction(UPDATE_COORDINATES); //should match the receiver intent filter at the registering 
       coordintesupdater.sendBroadcast(mIntent); 
      } else { 
       Log.i("Received", "empty message"); 
      } 
     } 

這是我的廣播接收器不會被調用,也沒有收到經度和緯度。

private BroadcastReceiver locationupdatesreceiver = new BroadcastReceiver() { 
     @Override 
     public void onReceive(Context context, Intent intent) { 
      String messagestr = intent.getStringExtra(MyGcmListenerService.UPDATE_COORDINATES); 
      String latst = "", lonst = ""; 
      double lati, longi; 
      if (messagestr != null && !messagestr.isEmpty()) { 
       String[] separated = messagestr.split(","); 
       latst = separated[0].trim(); 
       lonst = separated[1].trim(); 
       try { 
        lati = Double.parseDouble(separated[0].trim()); 
        longi = Double.parseDouble(separated[1].trim()); 
        //cLocation.setLatitude(lati); 
        //cLocation.setLongitude(longi); 
        LatLng updatedloc = new LatLng(lati, longi); 
        //draw the cab and update it's location periodically 
        drawLocationUpdatesonMap(updatedloc); 
       }catch (NumberFormatException nfe){ 
        nfe.printStackTrace(); 
       } 
      } 
     } 
    }; 

    private void drawLocationUpdatesonMap(final LatLng newlocatioin){ 
     GoogleMap.OnMyLocationChangeListener mLoChangeListnener = new OnMyLocationChangeListener() { 
      @Override 
      public void onMyLocationChange(Location location) { 
       //if (cMarker != null) 
       // cMarker.remove(); 
     Log.i("device location", newlocatioin.toString()); 
       cabMarker = map.addMarker(new MarkerOptions() 
         .position(newlocatioin) 
         .visible(true) 
         .icon(BitmapDescriptorFactory.fromResource(R.drawable.mmovingc)) 
         .flat(true)); 
      } 
     }; 
     map.setOnMyLocationChangeListener(mLoChangeListnener); 
    } 

僅供參考GcmListenerservice是我的地圖活動的嵌套類。

回答

0

這很尷尬。我忘記分別在OnResume和Onpause註冊和註銷廣播接收器。它現在像一個魅力。