Hallo,
ich würde gerne eine eine Spieler Position wie bei SanMaps in einer Picturebox anzeigen lassen.
Nicht im Browser sondern in einer C# Anwendung.
Beispiel:
X = -2065.1150
Y -83.5138
Weiß jemand wie ich das ganze in C# umsetzten könnte?
Hallo,
ich würde gerne eine eine Spieler Position wie bei SanMaps in einer Picturebox anzeigen lassen.
Nicht im Browser sondern in einer C# Anwendung.
Beispiel:
X = -2065.1150
Y -83.5138
Weiß jemand wie ich das ganze in C# umsetzten könnte?
musst dir refernz punkte im spiel suchen und diese zur karte legen um so xy positionen ingame zu xy positionen auf dem bild umzurechnen. dabei ist vorallem der 0 punkt ingame wichtig.
Mit https://git.bitrain.co/gtadb/tiles und Leaflet kannst du einfach die XY Koordinaten direkt aus SAMP nehmen. Wir haben für eine Livemap ein Socket Plugin für SAMP genommen, dass die Position aller Spieler jede Sekunde an einen Cache sendet, auf den Leaflet bzw. der Client dann zugreift.
Wenn du die komplette Karte in deiner Anwendung hast, reicht eine Prozentualrechnung. Die Karte geht von 0 bis wie viel? Sagen wir mal 6000, weiß es leider nicht aus dem Kopf.
Ist deine Karte in der Anwendung also z.B. 2000 Pixel groß, so rechnest du mit 33% also Koordinate * 0.33 und hast somit den Pixelpunkt auf deiner Karte.
Mit git.bitrain.co/gtadb/tiles und Leaflet kannst du einfach die XY Koordinaten direkt aus SAMP nehmen. Wir haben für eine Livemap ein Socket Plugin für SAMP genommen, dass die Position aller Spieler jede Sekunde an einen Cache sendet, auf den Leaflet bzw. der Client dann zugreift.
Danke schon mal für das Tile-Set, aber ich hab gerade Schwierigkeiten beim umsetzen.
Theoretisch kann ich das Tile-Set auch für die Google Maps API benutzen (http://www.codeproject.com/Tip…nForm-with-WebBrowser-and) aber ich würde es gerne eher schlicht halten als Label, da ich so einfacher die Positionen ändern kann.
Oder kann mir jemand ein beispiel in C# schreiben ?
Ich brauche nur die eingefügte Map und eine beispiel Position.
Das ändern der Positionen und den ganzen Rest bekomme ich schon irgendwie hin.
Wenn du die komplette Karte in deiner Anwendung hast, reicht eine Prozentualrechnung. Die Karte geht von 0 bis wie viel? Sagen wir mal 6000, weiß es leider nicht aus dem Kopf.
Ist deine Karte in der Anwendung also z.B. 2000 Pixel groß, so rechnest du mit 33% also Koordinate * 0.33 und hast somit den Pixelpunkt auf deiner Karte.
musst dabei aber bedenken, dass der 0-punkt ingame in der mitte der karte ist.
Alles anzeigenHallo,
ich würde gerne eine eine Spieler Position wie bei SanMaps in einer Picturebox anzeigen lassen.
Nicht im Browser sondern in einer C# Anwendung.
Beispiel:
X = -2065.1150
Y -83.5138
Weiß jemand wie ich das ganze in C# umsetzten könnte?
Hier findest du einen Ansatz in PHP
kostengünstige Webentwicklung
Hab es jetzt schon in html hinbekommen mit der SanMap.
Jetzt brauche ich allerdings noch ein paar Funktionen, kann mir jemand dabei helfen?
<!DOCTYPE HTML>
<html>
<head>
<title>SanMap</title>
<!-- Disallow users to scale this page -->
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<style type="text/css">
/* Allow the canvas to use the full height and have no margins */
html, body, #map-canvas {
height: 100%;
margin: 0
}
</style>
</head>
<body>
<!-- The container the map is rendered in -->
<div id="map-canvas"></div>
<!-- Load all javascript -->
<script src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script src="js/SanMap.min.js"></script>
<script>
/*
* Define the map types we will be using.
*
* SanMapType parameters: minZoom, maxZoom, getTileUrlFunction, [optional]tileSize.
*
* The default value for tileSize is 512.
*/
var mapType = new SanMapType(0, 2, function (zoom, x, y) {
return x == -1 && y == -1
? "tiles/map.outer.png"
: "tiles/map." + zoom + "." + x + "." + y + ".png";//Where the tiles are located
});
var satType = new SanMapType(0, 3, function (zoom, x, y) {
return x == -1 && y == -1
? null
: "tiles/sat." + zoom + "." + x + "." + y + ".png";//Where the tiles are located
});
var map = SanMap.createMap(document.getElementById('map-canvas'),
{'Normal': mapType, 'Satellite': satType}, 2, null, false, 'Satellite');
}
</script>
</body>
Alles anzeigen
Punkte werden so erstellt:
var homeInfoWindow = new google.maps.InfoWindow({
content: '<h3>HLF 30-20 <font color="green">Status 1</font></h3><p><b>Wache: </b>1</p><p><b>Fahrzeug: </b>HLF 30-20</p><p><b>Status: </b><font color="green">Status 1</font></p><p><b>Besatzung: </b>Player_1, Player_2</p>'
});
var homeMarker = new google.maps.Marker({
position: SanMap.getLatLngFromPos(2244.4473, -1665.1510),
map: map,
icon: 'https://cdn0.iconfinder.com/data/icons/fire/85/ambulance_1-16.png'
});
google.maps.event.addListener(homeMarker, 'click', function() {
map.setCenter(homeMarker.position);
homeInfoWindow.open(map,homeMarker);
});
Alles anzeigen
Mir fehlt eine Array mit den Fahrzeugen bzw. Punkten.
und folgende Funktionen:
Funktion zum Erstellen von Punkten
Funktion zum bearbeiten der Punkte ( Position, Status usw)
Funktion zum Löschen der Punkte
z.B CreatePoint("PunktName", "Beschreibung", X,Y)
EditPoint("PunktName", "Beschreibung", X,Y) usw..
Mein Versuch
function CreateFW(searchString, s_x ,s_y) {
cars.push(searchString);
alert(cars[0]);
var homeInfoWindow1 = new google.maps.InfoWindow({
content: '<h3>HLF 30-20 <font color="green">Status 1</font></h3><p><b>Wache: </b>1</p><p><b>Fahrzeug: </b>HLF 30-20</p><p><b>Status: </b><font color="green">Status 1</font></p><p><b>Besatzung: </b>Player_1, Player_2</p>'
});
var homeMarker1 = new google.maps.Marker({
position: SanMap.getLatLngFromPos(s_x, s_y),
map: map,
icon: 'https://cdn0.iconfinder.com/data/icons/fire/106/police_car-24.png'
});
google.maps.event.addListener(homeMarker1, 'click', function() {
map.setCenter(homeMarker1.position);
homeInfoWindow1.open(map,homeMarker1);
});
}
Alles anzeigen
Leider bisher sehr unsauber und schlecht umgesetzt...
Die Funktionen sollten sich möglichst im HTML Dokument befinden, da ich sie wie folgt in C# aufrufe: