package com.csfv3.maps.views.overlays;
import java.util.ArrayList;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.graphics.Point;
import android.widget.Toast;
import com.csfv3.maps.tileManagement.TilesManager;
import com.csfv3.poi.POI;
public class POIOverlay extends MapOverlay
{
protected Bitmap poiMarker;
protected Paint bitmapPaint = new Paint();
protected Paint textPaint = new Paint();
protected ArrayList<POI> points = new ArrayList<POI>();
protected ArrayList<Point> absPoints = new ArrayList<Point>();
Context context;
public POIOverlay(TilesManager tilesManager, Context context, Bitmap poiMarker)
{
super(tilesManager);
this.context = context;
this.poiMarker = poiMarker;
textPaint.setColor(Color.BLACK);
textPaint.setTextSize(30);
}
@Override
protected void drawOverlay(Canvas canvas, int x, int y)
{
for (POI poi : points)
{
if (!poi.isVisible()) continue;
Point poiPos = tilesManager.lonLatToPixelXY(poi.getLongitude(), poi.getLatitude());
int finalX = poiPos.x + x;
int finalY = poiPos.y + y;
canvas.drawBitmap(poiMarker, finalX - poiMarker.getWidth()/2, finalY - poiMarker.getHeight()/2, bitmapPaint);
// canvas.drawText(poi.getName(), finalX - poiMarker.getWidth()/2,
// finalY, textPaint);
}
}
public void addPoint(POI point)
{
if (point == null) return;
for (POI p : points)
{
if (p.getID() == point.getID()) return;
}
points.add(point);
absPoints.add(tilesManager.lonLatToPixelXY(point.getLongitude(), point.getLatitude()));
}
@Override
public void onClick(double longitude, double latitude)
{
Intent myIntent = new Intent(POIOverlay.this, Infopoi.class);
POIOverlay.this.startActivity(myIntent);
POIOverlay.this.finish();
Point abs = tilesManager.lonLatToPixelXY(longitude, latitude);
float r = poiMarker.getWidth()/2;
for (Point p : absPoints)
{
if (Math.abs(abs.x - p.x) <= r && Math.abs(abs.y - p.y) <= r)
{
int duration = 8;
Toast.makeText(context, points.get(absPoints.indexOf(p)).getIcon(),Toast.LENGTH_LONG).show();
for (int i = 0; i < duration; i++) {
Toast.makeText(context, points.get(absPoints.indexOf(p)).getInfo(), Toast.LENGTH_LONG).show();
}
return;
}
}
}
@Override
public void onMapZoomChanged(int zoom)
{
absPoints.clear();
for (POI p : points)
{
absPoints.add(tilesManager.lonLatToPixelXY(p.getLongitude(), p.getLatitude()));
}
super.onMapZoomChanged(zoom);
}
}
Я использую намерение начать новую деятельность после «pubblic void on click», но ошибка отчета об андроид-студии и не запускать новую активность почему ??? Пожалуйста помоги !!! Все мои attemps являются failed..infopoi.class не загруженыНачинаете новый актив
Update ... 10/03/2015
Да я объявляю в манифесте ... но я не войти кошка becouse я есть подчеркнуть весь метод .. in android studio .. (POIOverlay.this, Infopoi.class) является подчеркнутым красным. Его сообщение об этой ошибке: невозможно разрешить конструктор Intent (com.cfsv3.maps, views.overlays.POiOverlay, java.lang.Class) 'In POIOverlay.this.startActivity (myIntent); startactivity является красным, а ошибка: не удается разрешить метод startActivity (android.content.Intent) 'также я пытаюсь добавить в public void onClick (двойная долгота, двойная широта) реализует OnClickListener. У меня ошибка в выполнении его отчета красным: Неожиданный токен в инструментах и в OnClickListener говорит красным цветом. Не удается разрешить символ. Нужна помощь!
Вы можете оставить сообщение об ошибке LogCat OnClickListener пожалуйста? Вы объявили свою активность в файле манифеста? – Bubu
Опубликовать выходы LogCat –
«HELLLPPP» не приведет вас никуда на этом сайте – JClassic