City and Country Labels in English or German

Hi,

is there a chance to get the labels on the map in one consistent language, e.g. english or german? Some countries and cities are labled with cyrillic or chinese letters.

none of my users would be able to read this, and in order to raise the acceptance of the application, i would like to use english or german lables all over the worldmap.

any ideas?

thanks in advance
Chris

the real code is quiet longer, but i guess, this is the significant part you need to see to help me out, if possible:


        var map; //complex object of type OpenLayers.Map

        var lineLayer;
        var markerLayer;

        // Projection Objects
        var wgs84 = new OpenLayers.Projection("EPSG:4326"); // The way we store our Position Data in Basil
        var sphericalMercator = new OpenLayers.Projection("EPSG:900913"); // The way OpenStreetMaps stores its Maps

        // Start position for the map (nicos AG Home)
        var lon = 7.594063;
        var lat = 51.969627;
        var zoom = 10;
        var initialCenterPos = new OpenLayers.LonLat(lon, lat).transform(wgs84, sphericalMercator);

        // Create the map with some Basic Parameters
        map = new OpenLayers.Map ("map", {
            maxExtent: new OpenLayers.Bounds(-20037508.34,-20037508.34,20037508.34,20037508.34), // These Points are 
            maxResolution: 156543.0399,
            numZoomLevels: 19,
            units: 'm',
            displayProjection: wgs84
        } );
 
         // Base Layers
        layerMapnik = new OpenLayers.Layer.OSM.Mapnik("Mapnik");
        map.addLayer(layerMapnik);
        layerTilesAtHome = new OpenLayers.Layer.OSM.Osmarender("Osmarender");
        map.addLayer(layerTilesAtHome);

        // Additional Feature Layers
        lineLayer = new OpenLayers.Layer.Vector('VPN Connections');
        map.addLayer(lineLayer);
        markerLayer = new OpenLayers.Layer.Markers('Locations');
        map.addLayer(markerLayer);            

            // Controls
        map.addControl(new OpenLayers.Control.LayerSwitcher());
        map.addControl(new OpenLayers.Control.MousePosition());
        map.addControl(new OpenLayers.Control.ScaleLine());
        map.addControl(new OpenLayers.Control.ZoomBox());

As far as I understand the concept of openlayers is, that it basically displays geocoded images from a server. The labels in foreign languages are part of the images As Mapnik is used by users all over the world every label in a country is rendered in with local characters. So, if you want to have to world map with German / English names, i guess you have to generate your own images.

Two choices:

  • Load a layer of transparent images that only contain the labels over the base layer. You can make a layer e.g. for each language
  • Load the names as KML or geoJSON from a database and have OL plot it over the base layer.

Which one you choose depends on the application. If there is a lot of info then images is probably is best, but if you need flexibility then loading KML can be best.