Android从地图v2中删除折线

时间:2016-11-30 16:06:07

标签: android google-maps google-polyline

我在地图上绘制struct const_node { const_node(char content, const_node* next) : next(next), content(content) { } const_node* const next; const char content; }; // put front in front of each existing sub-result void update_helper(int front, std::vector<const_node*>& intermediate) { for (size_t i = 0; i < intermediate.size(); i++) { intermediate[i] = new const_node(front + 'a', intermediate[i]); } if (intermediate.empty()) { intermediate.push_back(new const_node(front + 'a', NULL)); } } std::vector<const_node*> decode_it(int digits[9], size_t count) { int current = 0; std::vector<const_node*> intermediates[3]; for (size_t i = 0; i < count; i++) { current = (current + 1) % 3; int prev = (current + 2) % 3; // -1 int prevprev = (current + 1) % 3; // -2 size_t index = count - i - 1; // invert direction // copy from prev intermediates[current] = intermediates[prev]; // update current (part 1) update_helper(digits[index], intermediates[current]); if (index + 1 < count && digits[index] && digits[index] * 10 + digits[index + 1] < 26) { // update prevprev update_helper(digits[index] * 10 + digits[index + 1], intermediates[prevprev]); // add to current (part 2) intermediates[current].insert(intermediates[current].end(), intermediates[prevprev].begin(), intermediates[prevprev].end()); } } return intermediates[current]; } void cleanupDelete(std::vector<const_node*>& nodes); int main() { int code[] = { 1, 2, 3, 1, 2, 3, 1, 2, 3 }; int size = sizeof(code) / sizeof(int); std::vector<const_node*> result = decode_it(code, size); // output for (size_t i = 0; i < result.size(); i++) { std::cout.width(3); std::cout.flags(std::ios::right); std::cout << i << ": "; const_node* item = result[i]; while (item) { std::cout << item->content; item = item->next; } std::cout << std::endl; } cleanupDelete(result); } void fillCleanup(const_node* n, std::set<const_node*>& all_nodes) { if (n) { all_nodes.insert(n); fillCleanup(n->next, all_nodes); } } void cleanupDelete(std::vector<const_node*>& nodes) { // this is like multiple inverse trees, hard to delete correctly, since multiple next pointers refer to the same target std::set<const_node*> all_nodes; for each (auto var in nodes) { fillCleanup(var, all_nodes); } nodes.clear(); for each (auto var in all_nodes) { delete var; } all_nodes.clear(); } 就像动画一样。如下。

polyline

如何删除m_handler = new Handler(); m_handlerTask = new Runnable() { @Override public void run() { //line.remove(); if (t < pointsPoly.size() - 1) { LatLng src = pointsPoly.get(t); LatLng dest = pointsPoly.get(t + 1); Polyline lineAnimation = googleMap.addPolyline(new PolylineOptions() .add(new LatLng(src.latitude, src.longitude), new LatLng(dest.latitude, dest.longitude)) .width(10).color(Color.DKGRAY).geodesic(true)); t++; } else { t = 0; } m_handler.postDelayed(m_handlerTask, polyLineTimer); } }; m_handler.post(m_handlerTask); ?我不想polyline。 我试过了clearMap(),但它没有用。

1 个答案:

答案 0 :(得分:4)

您只需执行以下操作,但不是将结果分配给变量,而是将其放入ArrayList ...

    ArrayList<Polyline> lines = new ArrayList<>();
    //Add line to map
    lines.add(mMap.addPolyline(new PolylineOptions()
                .add(new LatLng(location.getLatitude(), location.getLongitude()),
                        new LatLng(this.destinationLatitude, this.destinationLongitude))
                .width(1)
                .color(Color.DKGRAY));

    //Remove the same line from map
    line.remove();
  

从地图中删除此折线。删除折线后,   所有方法的行为都是未定义的。